如何从导航历史中删除页面?

时间:2013-06-30 23:52:59

标签: c# windows xaml windows-8 microsoft-metro

如何从导航历史中删除页面?

我这样前进:

this.Frame.Navigate(typeof(...));

但我想要的是

  

A - > B - > C - > D - > ë

返回?

  

E - >甲

所以我想删除后向导航堆栈。据我所知,在Windows 8中没有NavigationService。我在页面类中找不到任何有用的功能:

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.page

3 个答案:

答案 0 :(得分:1)

一种方法是使用Frame.SetNavigationState。当您在页面A上时,将Frame.GetNavigationState存储在可在应用中的任何位置访问的静态变量中。

MyClass.PageANavigationState = Frame.GetNavigationState();

当您在E(或任何一个页面)上,并且想要将导航堆栈清除到A时,请使用

Frame.SetNavigationState[MyClass.PageANavigationState];

答案 1 :(得分:0)

我有同样的问题,我使用下面的代码完成了这个

while (Frame.BackStackDepth > 0)
{
    if (Frame.CanGoBack)
    {
        Frame.GoBack();
    }
}
Frame.CacheSize = 0;
Frame.Navigate(typeof(LoginScreen));

答案 2 :(得分:0)

在UWP上,Frame.BackStack.Clear()可以正常工作(因为它是IList<PageStackEntry>)。

此外,您可以使用其他IList方法(例如RemoveAt)来完成任务。