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

本文关键字:删除 记录 历史 导航 | 更新日期: 2023-09-27 18:20:41

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

我是这样前进的:

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

但我想要的是

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

回来了?

E->

所以我想删除向后导航堆栈。据我所知,NavigationService在Windows8中不可用。我在页面类中找不到任何有用的函数:

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

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

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

MyClass.PageANavigationState = Frame.GetNavigationState();

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

Frame.SetNavigationState[MyClass.PageANavigationState];

我遇到了同样的问题,我使用以下代码完成了这项工作

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

在UWP上,Frame.BackStack.Clear()运行良好(因为它是IList<PageStackEntry>)。

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