我正在构建Windows通用商店应用程序,首先关注Windows Phone 8.1应用程序。我将我的应用程序基于集线器应用程序。我想在应用启动时添加一个启动页面,用基于XAML的动画替换静态启动画面。我对导航很困惑,因为它似乎都是由集线器页面设置和拥有的。
我看了
事实上,最后一个明确指出"中心页面是用户对应用程序的入口点。
如何将页面添加到用户在集线器之前遇到的集线器应用程序,如启动页面或登录屏幕?
答案 0 :(得分:1)
通常我发布问题的时间比我看到的地方找到了答案。当NavigationHelper与中心页面一起添加到项目中时,它包含解释如何使用它的注释:
要使用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 events。
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");
}