【问题标题】:NavigationService in universal app通用应用程序中的 NavigationService
【发布时间】:2014-04-16 22:57:45
【问题描述】:

我创建了一个 Windows Phone 8.1 项目,在该项目中,我在代码的不同部分中使用了以下代码:

if (this.NavigationService.CanGoBack)
{
    this.NavigationService.RemoveBackEntry();
}

我尝试将此代码移植到通用应用程序,但我收到一条错误消息,提示无法解析 NavigationService。如何在通用应用世界中处理导航?

【问题讨论】:

    标签: navigation win-universal-app


    【解决方案1】:

    我遇到了同样的问题,也找不到 NavigationSerice。

    但经过一番搜索,我找到了 Navigate 的解决方案,我希望你可以使用这样的东西。

    private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
    {
        this.Frame.Navigate(typeof(BasicPage2));
    }
    

    更多信息请参见this 页面。

    BackButton 在 Windows 8.1 上的工作方式完全不同,您无需删除 BackEntry()。但是,当您想要返回时,您必须添加一些代码。

    例如:

    如果您从主页导航到第 1 页,并且希望使用(硬件)返回按钮从第 1 页导航返回到主页,您必须在主页中添加以下内容:

    在构造函数中添加这个:

    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
    

    并创建此方法:

     void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
        {
            if (Frame.CanGoBack)
            {
                Frame.GoBack();
                //Indicate the back button press is handled so the app does not exit
                e.Handled = true;
            }
        }
    

    现在您的应用使用 BackButton 从 Page1 导航回主页。

    【讨论】:

    • 谢谢,这为我指明了正确的方向。我猜我可以使用方法this.Frame.BackStack.RemoveAt(index) 来获得与remove back entry类似的功能。
    • 你可以使用 Frame.BackStack.Clear();删除后面的条目
    • 为什么这不包含在默认模板中我无法理解。
    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2023-04-05
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多