0

アプリのナビゲーションを編集しています。現時点では、ページのスタック トレースが 3 層の深さになるのは非常に基本的です。

メイン ページ > 選択ビュー > 新しいアイテムを追加

「新しいアイテムの追加」ページから、メイン ページに移動するキャンセル ボタンがあります。現在、App.xaml.cs に接続されたメッセンジャーがあり、そこでメッセージを聞き、コードを使用して 2 回戻ることを試みます。

for (int i = 0; i <= navigationMessage.BackKeyTimes; i++)
{
    if (RootFrame.CanGoBack)
    {
        RootFrame.GoBack();
    }
}

ただし、何度ループしても、前の「選択ビュー」ページに移動するだけです。マイクロソフトは、戻ることができるページ数に制限を設けていますか?

4

1 に答える 1

0

メソッドの名前が既に示しているように、ナビゲーション スタックで1 ページRootFrame.GoBack();戻るためにのみ使用する必要があります。

ここでできることは次のとおりです。

private void Cancel()
{
    // Delete "Selection View" from the navigation stack
    NavigationService.RemoveBackEntry();

    // Navigate back to the MainPage
    NavigationService.Navigate(new Uri("/MainPage.xaml?clear=true", UriKind.Relative));
}

メイン ページで、OnNavigatedTo メソッドのclearパラメータを照会できるようになりました。true の場合はNavigationService.RemoveBackEntry();、スタックから "Add New Item" ページ (ナビゲートした場所) を削除するために再度呼び出します。

protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);            
    string clearParam;

    if (NavigationContext.QueryString.TryGetValue("clear", out clearParam))
    {
        if (Convert.ToBoolean(clearParam))
        {
            // Delete "Add New Item" from the navigation stack
            NavigationService.RemoveBackEntry();
        }
    }
}

ナビゲーション スタックからページを削除すると、MainPage に戻るときに [戻る] ボタンを使用して他のビューに戻ることができなくなります。これはあなたが必要としていたものですか?

これがうまくいったかどうか教えてください。幸運を!

于 2013-10-14T11:14:49.127 に答える