1

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

4

3 回答 3

1

我发现这个答案很有用:

如何清除框架的Backstack并重新开始

编写自己的 NavigationService 并将导航状态存储在构造函数中。

string state;

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

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

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

    public void ClearBackstack()
    {
        _mainFrame.SetNavigationState(state);
    }
于 2012-11-20T16:45:58.157 回答
1
frame.SetNavigationState("1,0");

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

于 2012-10-22T16:29:57.467 回答
0

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

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

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

于 2012-10-22T10:50:39.647 回答