I have a second .xaml page set up under the name Page2.xaml
and I want to make it so that when my button is clicked, the user is taken to Page2.xaml
I have this for my button inside of my Page1.xaml
:
<Grid>
<Button x:Name="localModeBtn"
Style="{StaticResource MainButtonStyle}"
Content="local mode"
Click="localModeBtn_Click" />
</Grid>
And for the button event handler:
private void localModeBtn_Click(object sender, RoutedEventArgs e)
{
Uri uri = new Uri("Page2.xaml", UriKind.Relative);
this.NavigationService.Navigate(uri);
}
Upon clicking the button I receive an error that says "Cannot locate resource page2.xaml
"
The thing is that Page2.xaml
is in the same folder as Pag1.xaml
so I can't see where I've gone wrong?
Solution to my own question:
I feel a bit silly providing a solution to my own question but thanks to Jasti's link I was able to sort my code out. As he had only posted a comment, I can't mark it as an answer, so here is the solution.
I changed the NavigationWindow on to a Window and inserted:
And within the constructor of the MainWindow.xaml.cs I added:
Then the last step was to adjust the button event handler to:
You don't need any C# code for this, just do it in XML:
(Reformatted code not tested)
You should use this, this worked for me:
There is a
variable type
of a page with the page.xaml right name in your solution. after that, you should use its methods to do it functionally.Use any container and bind the content to any property in your viewmodel or codebehind. After that you just have to update the property by setting a new page and call the PropertyChanged-event (see INotifyPropertyChanged interface). This will update the content of your container and you can display anything you want.
In case you want a separate window