如何实现删除Metro风格应用程序中的backStack条目?
答案 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();
}
虽然这实际上并没有清除堆栈,但它会将您带回程序的起始位置,并且列表中不会再有反向条目。如果您想通过按下按钮退出死胡同页面,则可以修改此行为以退回多个页面并有效删除后退条目。