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