清除NavigationService中的backstack

时间:2011-11-23 11:37:32

标签: windows-phone-7 navigationservice

我在我的应用程序中浏览不同的页面。登录后,我来到导航开始的主页。在导航期间,当我来到主页时,我想通过按BackKey进入登录页面,但我只能导航到以前导航的页面。我可以覆盖BackKeyPress事件以导航到登录页面但是在LoginPage中我应该再次覆盖Backkeypress,否则在登录页面和主页之间似乎存在循环按键。无论如何要清除导航历史记录吗?

2 个答案:

答案 0 :(得分:22)

您可以使用NavigationService.RemoveBackEntry:http://msdn.microsoft.com/en-us/library/system.windows.navigation.navigationservice.removebackentry%28v=VS.92%29.aspx

例如,要删除堆栈中的所有条目:

while (this.NavigationService.BackStack.Any())
{
   this.NavigationService.RemoveBackEntry();
}

<小时/> 此外,如果您想在检查其URI后仅删除上一页:

var previousPage = this.NavigationService.BackStack.FirstOrDefault();

if (previousPage != null && previousPage.Source.ToString().StartsWith("/MainPage.xaml"))
{
    this.NavigationService.RemoveBackEntry();
}

答案 1 :(得分:0)

虽然我知道最初的问题是7,但在Windows Phone 8.1中,NavigationService不再存在。

这是Windows Phone 8.1代码

 var previousPage = this.Frame.BackStack.FirstOrDefault();

 if (previousPage != null && previousPage.SourcePageType == typeof(MainPage))
 {
     this.Frame.BackStack.RemoveAt(this.Frame.BackStackDepth - 1);
 }