【发布时间】:2012-12-26 22:31:05
【问题描述】:
在页面之间导航时,我看到有一些功能可以让您返回/前进或返回“主页”页面。但是,我需要的是能够返回但跳过用户不应再访问的页面。我四处搜索,发现以下内容:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/3819f389-3bfc-4c59-a919-272927fc9229
我尝试使用 GetNavigationStack,但由于无法序列化和我作为 NavigationParameter 传递的对象,它一直失败。我必须使用元组来传递 2 个参数,但这无法序列化,因此我无法让导航堆栈对其进行编辑并手动删除页面。
然后我找到了这个WinRT - How to ignore or delete page from navigation history,并认为我可以包含一个布尔值,如果要跳过页面,可以设置该值
在LayoutAwarePage.cs(所有屏幕继承自的类,由Visual Studio生成)我添加了protected bool CanGoBackToThisPage { get; set; },如果您不想访问此页面,可以设置它,但这也有一些问题有时我不知道您是否希望能够再次访问该页面,直到您在当前页面上完成某些操作。我不认为你可以做类似previousFrame.CanGoBackToThisPage = true 的事情。此外,您有权访问的 Frame 对象(我认为)不能访问实际的页面对象,而是一些摘要对象,我不知道如何将这个布尔值放入该摘要对象.
有谁知道从导航堆栈中删除上一个/当前页面的简单方法?这似乎是一个非常普遍的问题,所以我很难认为微软没有给我们一些解决方法。
谢谢
【问题讨论】:
-
尝试手动编辑导航历史是个坏主意。您可能只是向后导航,然后检查是否应该继续向后导航。
标签: c# .net windows-8 microsoft-metro