我如何能实现在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