【问题标题】:Windows Phone 8.1 Frame Navigation History / BackStackWindows Phone 8.1 框架导航历史/BackStack
【发布时间】:2015-02-04 13:56:30
【问题描述】:

我正在为 WP 8.1 开发一个应用程序,它使用 Windows 运行时而不是 Silverlight。因此,我无法访问 NavigationService 类。

我尝试通过在OnNavigatedTo() 方法中将当前页面类型推送到堆栈来手动实现后退堆栈,但没有成功。

我需要做的就是找到一种管理导航历史记录的方法,这样当用户点击硬件后退按钮时,他们会被带到他们所在应用程序的最后一页,直到用户到达点击的第一页back 将退出应用程序。

有人可以在这里指出正确的方向吗?

【问题讨论】:

标签: navigation windows-runtime windows-phone windows-phone-8.1


【解决方案1】:

您可以通过导航框架的 BackStack 属性访问后台堆栈。 为此,您可以简单地覆盖 NavigationHelper 类中的 GoBack 命令(您可以在 Common 文件夹中找到它)。 在那里你可以简单地检查 BackStackDepth: 如果它是 0 那么你可以终止当前的应用程序,因为默认行为会暂停它而不关闭它:)

类似(在 NavigationHelper 类中):

public virtual void GoBack()
{
    if (this.Frame != null)
    {
        if (this.Frame.CanGoBack) this.Frame.GoBack();
        else App.Current.Exit();
    }
}

【讨论】:

  • 我没有公用文件夹,因为我开始使用“空白应用程序”。我添加了一个基本页面,它使用导航助手为我创建了 Common 文件夹。现在一切都按预期工作。谢谢!
【解决方案2】:

Frame 类现在包含导航方法(BackStack、GoBack、Navigate 等)

通过(在 Pages Codebehind 中)获取它:

((Frame)Parent).BackStack;

或通过其他地方:

((Frame)Window.Current.Content).BackStack;

【讨论】:

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