Windows Phone 8.1框架导航历史/ BackStack

时间:2015-02-04 13:56:30

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

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

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

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

有人能指出我在正确的方向吗?

2 个答案:

答案 0 :(得分:1)

您可以通过导航框架的BackStack属性访问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();
    }
}

答案 1 :(得分:0)

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

通过(在页面代码隐藏中)获取它:

((Frame)Parent).BackStack;

或其他地方通过:

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