在页面之间导航时,我发现有些功能可以让您返回/前进或进入“主页”页面。但是,我需要的是能够返回,但跳过用户不应再访问的页面。我周围搜索,发现以下内容:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/3819f389-3bfc-4c59-a919-272927fc9229在Windows 8中关闭导航堆栈的页面应用程序
我尝试使用GetNavigationStack,但由于无法序列化和对象作为NavigationParameter传递,因此它保持失败。我不得不使用Tuple传递2个参数,但是这不能被序列化,所以我无法让导航堆栈编辑它并手动删除页面。
然后我发现这个WinRT - How to ignore or delete page from navigation history,我想我可以包括可设置一个布尔值,如果页面被跳过
在LayoutAwarePage.cs
(类所有的屏幕继承,由Visual Studio生成的)我说protected bool CanGoBackToThisPage { get; set; }
如果你不想访问这个页面,可以设置它,但也有一个问题,因为有些时候我不知道你是否希望能够再次访问一个页面,直到你在当前页面上做了一些事情。我不认为你可以做类似previousFrame.CanGoBackToThisPage = true
的事情。此外,您有权访问的Frame
对象没有(我认为)可以访问实际的页面对象,但是有一些摘要对象,而我不知道如何将该布尔值存入该摘要对象。
有谁知道一个简单的方法来从导航堆栈中删除前一页/当前页面?这似乎是一个非常常见的问题,所以我很难想到微软并没有给我们一些方法。
感谢
试图手动编辑导航历史记录是一个坏主意。您可能只需导航一个,然后检查是否应该继续向后导航。 – mydogisbox