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

时间:2016-04-28 10:36:44

标签: c# win-universal-app windows-10-universal

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

MainPage - >第1页 - >第2页 - >

现在从Splitview用户点击第1页,所以堆栈就像这样

MainPage - >第1页 - >第2页 - >第1页

我想要的是,如果第1页已经加载,而不是我想删除第1页和该页面上方的所有框架,

这就是堆栈的样子:

MainPage - >第1页

在android中我知道我们可以设置标志“ClearTop”,以便它自动执行同一页面的清理,UWP App有类似的东西吗?

1 个答案:

答案 0 :(得分:0)

在当前帧上,您可以检查BackStack集合,并删除任何条目

以下是您可以使用的代码段,并适应:)

     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();
            }
        }