如何在 WinRT XAML 应用程序中操作框架的历史记录?
用户将从我的中心页面开始,他们可以在其中选择现有项目以转到其编辑屏幕,也可以选择“新项目”。 “新建项目”将引导他们通过一个简短的向导,然后将他们带到“编辑项目”屏幕。
向导页面只是我在框架中导航到的页面是有意义的;这样,如果用户改变主意,他们可以退出向导。 (它只有两页,因此“后退”可以代替“取消”。)但是一旦向导完成并提交更改,这些向导页面就不再有任何理由出现在历史记录中;如果用户从“编辑项目”页面单击“返回”,我希望他们立即返回到中心。
为了说明这一点,我希望流程看起来像这样:
- 框架历史记录:集线器。用户单击“新项目”。
- 帧历史记录:中心 -> 向导页面 1。用户单击“下一步”。
- 帧历史记录:中心 -> 向导页面 1 -> 向导页面 2。用户单击“完成”。
- 帧历史记录:中心 -> 编辑项目。
Frame http://msdn.microsoft.com/en-us/library/windows.ui.xaml.controls.frame.aspx似乎没有任何“从历史记录中删除”的方法。文档确实暗示可能有某种方法可以覆盖历史记录,因为文档GoBack http://msdn.microsoft.com/en-us/library/windows.ui.xaml.controls.frame.goback.aspx说“导航到后退导航历史记录中的最新项目,如果 Frame 管理自己的导航历史记录“(强调我的),但这就是关于这个主题的全部内容——没有提到其他人如何管理它的历史。所以我不知道这是否有用。
用户完成向导后,如何从框架的历史记录中删除向导页面?
您可以通过在框架上调用 SetNavigationState(string navigationState) 从历史记录中删除页面。不幸的是,序列化的 navigationState 的格式是“仅供内部使用”,因此仅更改字符串可能会破坏未来版本中的代码。
我只能想到一种面向未来的方法完全清楚导航堆栈:
- 在程序启动时,通过调用 GetNavigationState 保存空导航状态。
- 在为“编辑项目”页面调用 Navigate 之前,请使用空导航状态调用 SetNavigationState。
您的“编辑项目”页面现在将成为堆栈上的第一页。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)