Как и AnthonyWJones сказал, что вам нужно использовать каркас навигации.
Сначала вам нужно добавить ссылку на System.Windows.Controls.Navigation
в вашем проекте и сослаться на нее в MainPage.xaml
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
Тогда вам понадобится рамка, в которой вы будете переключать различные страницы XAML. Примерно так:
<navigation:Frame x:Name="navFrame" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Source=”/Views/First.xaml” />
Теперь где-то в MainPage.xaml у вас может быть кнопка с тегом
<Button Click="Button_Click" Tag="/Views/Second.xaml" Content="Second" />
и в обработчике событий Button_Click
вы можете отключить содержимое, показанное в navFrame
.
private void Button_Click(object sender, RoutedEventArgs e)
{
Button theButton = sender as Button;
string url = theButton.Tag.ToString();
this.navFrame.Navigate(new Uri(url, UriKind.Relative));
}
Заметим, что при использовании NavigationFramework кнопки браузера вперед и назад работают отлично, а URL-адрес в адресной строке обновляется в зависимости от страницы XAML, на которой вы сейчас находитесь: