Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何忽略导航历史记录中的同一页_C#_Win Universal App_Windows 10 Universal - Fatal编程技术网

C# 如何忽略导航历史记录中的同一页

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应用程序的功能?在当前帧上,您可以检查

我们是否可以忽略导航堆栈中的相同页面条目, 实际上,在我的UWP应用程序中有以下情况,这就是用户从一个页面导航到另一个页面的方式

主页->第1页->第2页->

现在从Splitview用户点击第1页,堆栈如下

主页->第1页->第2页->第1页

我想要的是,如果已经加载了第1页,那么我想删除第1页以及该页上方的所有框架

这是堆栈的外观:

主页->第1页


在安卓系统中,我知道我们可以设置标志“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();
            }
        }