删除MetroStyle应用程序中的BackStack条目

时间:2012-10-22 10:27:59

标签: windows-8 windows-runtime microsoft-metro

如何实现删除Metro风格应用程序中的backStack条目?

3 个答案:

答案 0 :(得分:1)

frame.SetNavigationState("1,0");

将为您清除导航历史记录。

答案 1 :(得分:1)

我觉得这个答案很有用:

How to clear Backstack of the frame and start afresh

编写您自己的NavigationService并将navigationstate存储在构造函数中。

string state;

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

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

然后在服务上实现此方法并在需要时调用它:

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

答案 2 :(得分:0)

似乎不可能。如果要完全清除后台堆栈(例如,如果您有“主页”按钮),则可以使用网格示例应用程序中LayoutAwarePage.cs文件中提供的代码。

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

虽然这实际上并没有清除堆栈,但它会将您带回程序的起始位置,并且列表中不会再有反向条目。如果您想通过按下按钮退出死胡同页面,则可以修改此行为以退回多个页面并有效删除后退条目。