如何从导航历史中删除页面?
我这样前进:
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
答案 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
)来完成任务。