如何实现删除 Metro 风格应用程序中的 backStack 条目?
问问题
1947 次
3 回答
1
我发现这个答案很有用:
编写自己的 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 回答