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