Luk*_*uke 7 .net c# microsoft-metro windows-8
在页面之间导航时,我发现有一些功能可让您返回/转发或返回"主页"页面.但是,我需要的是能够返回但跳过用户不应再访问的页面.我四处搜索,发现以下内容:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/3819f389-3bfc-4c59-a919-272927fc9229
我尝试使用GetNavigationStack,但由于无法序列化而导致失败,因此我作为NavigationParameter传递了对象.我不得不使用一个元组来传递2个参数,但这不能被序列化,因此我无法让导航堆栈进行编辑并手动删除页面.
然后我找到了这个WinRT - 如何忽略或删除导航历史中的页面,并认为我可以包含一个布尔值,如果要跳过页面,可以设置该值
在LayoutAwarePage.cs(所有屏幕继承自,由Visual Studio生成的类)我添加了protected bool CanGoBackToThisPage { get; set; }哪些可以设置,如果你不想访问这个页面,但也有一个问题,因为有些时候我不知道你是否想要成为能够再次访问页面,直到你在当前页面上做了一些事情.我认为你不能做类似的事情previousFrame.CanGoBackToThisPage = true.此外,Frame您可以访问的对象(我认为)不能访问实际的页面对象,而是一些摘要对象,而我不知道如何将此布尔值添加到该摘要对象中.
有谁知道从导航堆栈中删除上一页/当前页面的简单方法?这似乎是一个非常普遍的问题,所以我很难想到微软没有给我们一些方法.
谢谢
好的,我不知道为什么在发布问题之前我没有想到它.也许我只是累了.
我只是打了Frame.GoBack()两次电话然后导航到我要去的页面:
// If the user presses back we don't want them to visit this page or the previous page they were on so remove them from the navigation stack
Frame.GoBack();
Frame.GoBack();
// Go to the detail page
this.Frame.Navigate(typeof(GroupDetailPage), mGroup);
Run Code Online (Sandbox Code Playgroud)
我想我认为调用GoBack()实际上会使页面对前一个页面有效,但事实并非如此