В событии OnLoaded файла RootPage.xaml.cs вы можете увидеть следующий код:
this.rootFrame.Navigate( new Uri( "Page1.xaml", UriKind.Relative ) );
Это программный переход к Page1.xaml (который реализует NavigationPage), когда RootPage загружается, вызывая метод Navigate экземпляра элемента управления Frame, определенного в RootPage.xaml:
<h:Frame x:Name="rootFrame" Grid.Row="0" Grid.Column="1"
NavigationUIVisibility="Visible" Margin="4" />
Этот метод Navigate, в свою очередь, вызывает метод Navigate инкапсулированного экземпляра StackJournal во фрейме.
Если вы находитесь в коде позади страницы, которая не имеет прямого доступа к родительскому фрейму (т. Е. К любой другой странице, кроме RootPage), такой как Page1.xaml, вам нужно вызвать событие RequestNavigate, которое будет всплывать до Ближайший родительский кадр.
Следующий код показывает, как программно перемещаться от нажатия кнопки на Page1.xaml непосредственно к Page3.xaml:
private void TestButton_Click(object sender, RoutedEventArgs e)
{
this.RaiseEvent(NavigationLink.RequestNavigateEvent,
new RequestNavigateEventArgs(new Uri("Page3.xaml", UriKind.Relative),
"rootFrame"));
}
Обратите внимание, что targetName - это rootFrame, родительский объект Frame, который в конечном итоге выполняет навигацию.