アプリケーション内のさまざまなページをナビゲートしています。ログインすると、ナビゲーションが始まるホームページに移動します。ナビゲーション中にホームページにアクセスしたときに、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 に答える