【问题标题】:Adding a page before the hub page in a Windows Phone 8.1 store app在 Windows Phone 8.1 应用商店应用中的中心页面之前添加页面
【发布时间】:2015-04-09 22:40:02
【问题描述】:

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

我看过

事实上,最后一个明确声明“中心页面是用户进入应用程序的入口点”。

如何将用户在中心之前遇到的页面添加到中心应用,例如启动页面或登录屏幕?

【问题讨论】:

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


    【解决方案1】:

    通常,我一发布问题就看到在哪里可以找到答案。当 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");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多