在Windows Phone 8.1商店应用中的集线器页面之前添加页面

时间:2015-04-09 10:37:19

标签: xaml windows-runtime windows-phone-8.1 winrt-xaml win-universal-app

我正在构建Windows通用商店应用程序,首先关注Windows Phone 8.1应用程序。我将我的应用程序基于集线器应用程序。我想在应用启动时添加一个启动页面,用基于XAML的动画替换静态启动画面。我对导航很困惑,因为它似乎都是由集线器页面设置和拥有的。

我看了

事实上,最后一个明确指出"中心页面是用户对应用程序的入口点。

如何将页面添加到用户在集线器之前遇到的集线器应用程序,如启动页面或登录屏幕?

1 个答案:

答案 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");
}