9

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

4

2 回答 2

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();
}
于 2011-11-23T12:05:17.020 回答
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);
 }
于 2014-09-25T14:55:48.157 回答