删除返回堆栈项中MetroStyle应用(Removing the BackStack Entry

2019-09-29 06:00发布

我如何能实现在Metro风格的应用程序移除堆栈中的条目?

Answer 1:

frame.SetNavigationState("1,0");

将清除浏览历史为您服务。



Answer 2:

我发现这个答案有用:

如何清除帧的堆栈中,并重新开始

写你自己的NavigationService和navigationstate存储在构造函数中。

string state;

public NavigationService(Frame mainFrame)
{
    state = mainFrame.GetNavigationState();

_mainFrame = mainFrame;
_mainFrame.Navigating += _mainFrame_Navigating;
}

然后实现在服务这个方法并调用它需要的时候:

    public void ClearBackstack()
    {
        _mainFrame.SetNavigationState(state);
    }


Answer 3:

这似乎并不可能。 如果你想完全清楚后退堆栈(例如,如果你有一个“家”按钮),您可以使用网格示例应用程序的LayoutAwarePage.cs文件提供的代码。

if (this.Frame != null)
{
    while (this.Frame.CanGoBack) this.Frame.GoBack();
}

虽然这实际上并不清除栈,它带你回到程序的起始位置,不会有进一步的列表返回方向的条目。 如果你想通过按下一个按钮来备份死胡同页面时,你可以修改此行为退一步多个页面,并有效地去除背部的条目。



文章来源: Removing the BackStack Entry in MetroStyle Application