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 に答える