通常,我一发布问题就看到在哪里可以找到答案。当 NavigationHelper 与中心页面一起添加到项目中时,它包含解释如何使用它的 cmets:
要使用 NavigationHelper,请执行以下两个步骤或
从 BasicPage 或除 BlankPage 之外的任何其他页面项模板开始。
1) 在某处创建 NavigationHelper 的实例,例如在
页面的构造函数并为 LoadState 注册一个回调和
SaveState 事件。
public MyPage()
{
this.InitializeComponent();
var navigationHelper = new NavigationHelper(this);
this.navigationHelper.LoadState += navigationHelper_LoadState;
this.navigationHelper.SaveState += navigationHelper_SaveState;
}
private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
}
private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)
{
}
2) 注册页面以在页面参与时调用 NavigationHelper
通过覆盖 Windows.UI.Xaml.Controls.Page.OnNavigatedTo 在导航中
和 Windows.UI.Xaml.Controls.Page.OnNavigatedFrom 事件。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
navigationHelper.OnNavigatedTo(e);
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
navigationHelper.OnNavigatedFrom(e);
}
该样板代码只需要在我的页面中进行轻微更改:取出async,并将navigationHelper 设为实例变量。
然后在另一个页面开始按照Set start page in Windows Phone 8.1 universal app中的说明编辑App.xaml.cs:
#if WINDOWS_PHONE_APP
if (!rootFrame.Navigate(typeof(SplashPage), e.Arguments))
{
throw new Exception("Failed to create initial page");
}
#endif
#if WINDOWS_APP
if (!rootFrame.Navigate(typeof(HubPage), e.Arguments))
{
throw new Exception("Failed to create initial page");
}
#endif
然后在 SplashPage.xaml.cs 中,当我需要导航到我添加的中心页面时
if (rootFrame.Navigate(typeof(HubPage)))
{
Window.Current.Content = rootFrame;
}
else
{
throw new Exception("Failed to create hub page");
}