【发布时间】:2012-06-30 23:55:41
【问题描述】:
如何在 WinRT XAML 应用程序中操作 Frame 的历史记录?
用户将从我的中心页面开始,他们可以在其中选择现有项目以进入其编辑屏幕,也可以选择“新项目”。 “新建项目”将引导他们通过一个简短的向导,然后将他们带到“编辑项目”屏幕。
向导页面只是我在框架中导航到的页面是有意义的;这样,如果用户改变主意,就可以退出向导。 (它只有两页,所以“返回”可以代替“取消”。)但是一旦向导完成并提交了更改,这些向导页面就没有任何理由出现在历史记录中了。如果用户从“编辑项目”页面单击返回,我希望他们直接返回中心。
为了说明,我希望流程看起来像这样:
- 帧历史:集线器。 用户点击“新建项目”。
- 帧历史记录:Hub -> 向导页面 1。用户单击“下一步”。
- 帧历史记录:Hub -> 向导页面 1 -> 向导页面 2。用户单击“完成”。
- 帧历史记录:中心 -> 编辑项目。
Frame 似乎没有任何类似于“从历史中删除”的方法。文档确实暗示可能有某种方法可以覆盖历史记录,因为 GoBack 的文档说“导航到后退导航历史记录中的最新项目,如果框架管理自己的导航历史记录”(强调我的),但这就是关于这个话题的全部内容——没有提到其他人如何为它管理历史。所以我不知道这是否有用。
用户完成向导后,如何从 Frame 的历史记录中删除我的向导页面?
【问题讨论】:
-
我遇到了同样的问题 Joe,我想我们可能必须将 Frame 包装在自定义 NavigationService 类中,并自己维护历史堆栈。 (并将 Frame 的 BackStackDepth 设置为零 - 这样它就不会)
-
@Krishna,NavigationService 甚至存在于 WinRT 中吗?我在文档中找不到它,如果我在代码中输入类名,VS 不会提示我添加适当的
using。 -
对不起 - 我应该更清楚一点。我提到了一个 custom NavigationService,就像这个答案中显示的那样:stackoverflow.com/questions/10971023/… - 类似的东西可以扩展到包括导航历史。
标签: frame windows-runtime winrt-xaml