在页面之间导航时,我看到有一些功能可以让您返回/前进或返回“主页”页面。但是,我需要的是能够返回但跳过用户不应再访问的页面。我四处搜索,发现以下内容: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并认为我可以包含一个 bool 值,如果要跳过该页面,则可以设置该值
在 LayoutAwarePage.cs
(所有屏幕继承的类,由 Visual Studio 生成)中,我添加了 protected bool CanGoBackToThisPage { get;放; }
如果你不想访问这个页面,可以设置它,但是这也有一个问题,因为有时我不知道你是否想再次访问一个页面,直到你做了一些事情在当前页面上。我认为您无法执行类似 previousFrame.CanGoBackToThisPage = true
的操作。此外,您有权访问的 Frame
对象(我认为)无法访问实际的页面对象,而是访问一些摘要对象,我不知道我将如何获得它 bool 值到该摘要对象中。
有谁知道从导航堆栈中删除上一个/当前页面的简单方法?这似乎是一个非常普遍的问题,所以我很难相信微软没有给我们一些解决方法。
谢谢
最佳答案
好吧,我不知道为什么我在发布问题之前没有想到它。也许我只是累了。
我只是调用了两次 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);
我想我认为调用 GoBack()
实际上会使页面动画到前一个页面,但事实并非如此
关于c# - 在 Windows 8 应用程序中从导航堆栈弹出页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14047054/