c# - 在 Windows 8 应用程序中从导航堆栈弹出页面

标签 c# .net windows-8 microsoft-metro

在页面之间导航时,我看到有一些功能可以让您返回/前进或返回“主页”页面。但是,我需要的是能够返回但跳过用户不应再访问的页面。我四处搜索,发现以下内容: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/

相关文章:

windows-8 - 在 Visual Studio 2012 中发布 MVC 项目会导致空文件夹

c# - 强烈命名第三方程序集后出现构建错误。

c# - 为文本冒险存储区域数据的最佳方式是什么?

c# - Prism依赖注入(inject)接口(interface)对象获取空值

c# - 从树结构的每一层获取属性

c# - 在 .NET 中模仿 Windows 的 'Run' 窗口

c# - C#中异步调用方法

.net - LAN 唤醒 Powershell 脚本不起作用

c# - Lync NotInitializedException 在 Windows 8 上无法捕获

c# - 如何根据 Windows 8 xaml 中的文本长度调整文本 block 的字体大小