3

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

我这样前进:

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

但我想要的是

A -> B -> C -> D -> E

后退?

E -> A

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

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

4

3 回答 3

1

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

MyClass.PageANavigationState = Frame.GetNavigationState();

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

Frame.SetNavigationState[MyClass.PageANavigationState];
于 2013-07-01T00:06:50.547 回答
0

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

while (Frame.BackStackDepth > 0)
{
    if (Frame.CanGoBack)
    {
        Frame.GoBack();
    }
}
Frame.CacheSize = 0;
Frame.Navigate(typeof(LoginScreen));
于 2013-07-01T04:26:03.507 回答
0

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

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

于 2018-11-30T06:05:56.497 回答