Windows Phone 8.1 框架导航历史/BackStack
Windows Phone 8.1 Frame Navigation History / BackStack
我正在为 WP 8.1 开发一个应用程序,它使用 Windows 运行时而不是 Silverlight。因此,我无法访问 NavigationService
class。
我曾尝试通过在 OnNavigatedTo()
方法中将当前页面类型推送到堆栈来手动实现返回堆栈,但没有成功。
我需要做的就是找到一种方法来管理导航历史记录,这样当用户点击硬件后退按钮时,他们就会被带到应用程序中他们所在的最后一页,直到用户进入第一页回击将退出应用程序。
有人能给我指出正确的方向吗?
框架 class 现在包含导航方法(BackStack、GoBack、Navigate 等)
通过(在页面代码隐藏中)获取它:
((Frame)Parent).BackStack;
或通过其他地方:
((Frame)Window.Current.Content).BackStack;
您可以通过导航框架的 BackStack 属性 访问后台堆栈。
为此,您可以简单地覆盖 NavigationHelper class 中的 GoBack 命令(您可以在 Common 文件夹中找到它)。
在那里你可以简单地检查 BackStackDepth:如果它是 0 那么你可以终止当前的应用程序,因为默认行为会暂停它而不关闭它:)
类似于(在 NavigationHelper class 中):
public virtual void GoBack()
{
if (this.Frame != null)
{
if (this.Frame.CanGoBack) this.Frame.GoBack();
else App.Current.Exit();
}
}
我正在为 WP 8.1 开发一个应用程序,它使用 Windows 运行时而不是 Silverlight。因此,我无法访问 NavigationService
class。
我曾尝试通过在 OnNavigatedTo()
方法中将当前页面类型推送到堆栈来手动实现返回堆栈,但没有成功。
我需要做的就是找到一种方法来管理导航历史记录,这样当用户点击硬件后退按钮时,他们就会被带到应用程序中他们所在的最后一页,直到用户进入第一页回击将退出应用程序。
有人能给我指出正确的方向吗?
框架 class 现在包含导航方法(BackStack、GoBack、Navigate 等)
通过(在页面代码隐藏中)获取它:
((Frame)Parent).BackStack;
或通过其他地方:
((Frame)Window.Current.Content).BackStack;
您可以通过导航框架的 BackStack 属性 访问后台堆栈。 为此,您可以简单地覆盖 NavigationHelper class 中的 GoBack 命令(您可以在 Common 文件夹中找到它)。 在那里你可以简单地检查 BackStackDepth:如果它是 0 那么你可以终止当前的应用程序,因为默认行为会暂停它而不关闭它:)
类似于(在 NavigationHelper class 中):
public virtual void GoBack()
{
if (this.Frame != null)
{
if (this.Frame.CanGoBack) this.Frame.GoBack();
else App.Current.Exit();
}
}