C# 如何忽略导航历史记录中的同一页
我们是否可以忽略导航堆栈中的相同页面条目, 实际上,在我的UWP应用程序中有以下情况,这就是用户从一个页面导航到另一个页面的方式 主页->第1页->第2页-> 现在从Splitview用户点击第1页,堆栈如下 主页->第1页->第2页->第1页 我想要的是,如果已经加载了第1页,那么我想删除第1页以及该页上方的所有框架 这是堆栈的外观: 主页->第1页C# 如何忽略导航历史记录中的同一页,c#,win-universal-app,windows-10-universal,C#,Win Universal App,Windows 10 Universal,我们是否可以忽略导航堆栈中的相同页面条目, 实际上,在我的UWP应用程序中有以下情况,这就是用户从一个页面导航到另一个页面的方式 主页->第1页->第2页-> 现在从Splitview用户点击第1页,堆栈如下 主页->第1页->第2页->第1页 我想要的是,如果已经加载了第1页,那么我想删除第1页以及该页上方的所有框架 这是堆栈的外观: 主页->第1页 在安卓系统中,我知道我们可以设置标志“ClearTop”,以便它自动对同一页面执行清理,是否有类似于UWP应用程序的功能?在当前帧上,您可以检查
在安卓系统中,我知道我们可以设置标志“ClearTop”,以便它自动对同一页面执行清理,是否有类似于UWP应用程序的功能?在当前帧上,您可以检查backbackback集合,并删除任何条目 下面是一个您可以使用和改编的代码片段:)
如何管理EntryPage,因为在后台导航时,我不会获取页面类型,是否需要在每次导航页面之前将EntryPage设置为其他页面?是的。我是这样做的。AppShell是我的第一页。我只是注册了它的类型:NavigationHelper.Current.RegisterEntryPage(typeof(AppShell));谢谢,但我没有在我的应用程序中使用NavigationHelper和rootFrame.BackStack[rootFrame.BackStackDepth-1];如果场景类似于此MainPage->Page1->Page2->Page3->Page1NavigationHelper是我创建的一个类,则将不起作用。这门课没什么复杂的。如果使用myFrame.Navigate(typeof(AppShell),例如Arguments);若要导航,您的Backback集合必须存在并包含您的导航我仍然对您的建议感到困惑,请您发布工作解决方案,这将非常有帮助
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
// Check if we are on the entry page and try to go back
var backTypePage = rootFrame.BackStack[rootFrame.BackStackDepth - 1];
if (this.EntryPage != null && backTypePage.SourcePageType == this.EntryPage)
{
e.Handled = false;
rootFrame.BackStack.Clear();
}
else
{
e.Handled = true;
rootFrame.GoBack();
}
}