WinRT - 如何忽略或删除导航历史记录中的页面

rjo*_*vic 8 c# navigation xaml microsoft-metro windows-runtime

我在WinRT metro(c# - xaml)应用程序中有以下情况:

用户启动应用程序,他或她没有登录.在菜单栏中,我有一个按钮,可以将它们导航到购物车.值得一提的是,无论登录/退出状态如何,都可以点击它.

所以我有这个:

Home Page - > Login Page - > Shopping Cart
Run Code Online (Sandbox Code Playgroud)

一切都很好,但当我尝试按下购物车页面上的"返回"按钮时,我会导航回登录页面,这很有意义,因为页面在我的导航历史记录中.但我不希望这样,我想将用户返回主页并跳过登录页面.

我的问题是如何做到这一点,以及如何在WinRT上操作帧导航堆栈.我试着回去两次,但没有运气.

顺便说一句,我的页面是"LayoutAwarePage"页面,我正在使用与此http://dotnetbyexample.blogspot.com/2012/06/navigationservice-for-winrt.html类似的NavigationService .

Fil*_*kun 12

你可以用不同的方式来接近它.您可以将其设置为使后退按钮多次导航,直到它到达主页或跳过登录页面.您还可以在登录页面中显示导航之外的内容Frame- 在弹出窗口或应用程序的其他层中.

*更新

在8.1的平台上推出的BackStack,并ForwardStack在性能Frame,您可以操控.


Dre*_*rew 9

我知道它已经过时了,但是由于Google为我找到了这个页面,也许其他人也会找到这个页面.

答案虽然是有效的解决方法,但却没有回答这个问题.

您可以在登录页面上使用它,将其从后台堆栈中删除.

if(login_was_successful == true)
{
    this.Frame.Navigate(typeof(ShoppingCard));

    if(this.Frame.CanGoBack)
    {
        this.Frame.BackStack.RemoveAt(0);
    }
}
Run Code Online (Sandbox Code Playgroud)