2

NavigateButton(Back) をクリックしてホームページに移動したときに、いくつかのチェックを行いたいと思いました。1.MessageDialog を表示し、内容を「はい」または「いいえ」で更新します。 2.「はい」をクリックすると、現在のページが更新されます。[いいえ] をクリックした場合、何もしません。 3.ホームページに移動します。

以下のコードを使用していますが、現在は最初にホームページに戻り、次にメッセージ ダイアログをポップアップします。メッセージ ダイアログをクリックした後にホームページに移動するアクションを発生させるにはどうすればよいですか

    protected async override void OnNavigatedFrom(NavigationEventArgs e)
    {

        MessageDialog md = new MessageDialog("Do you want to save");
        md.Commands.Add(new UICommand("Yes", (UICommandInvokedHandler) =>
            {
                Application.Current.Exit();
                //this.UpdateClick();
            }));
        md.Commands.Add(new UICommand("No"));
        var task = md.ShowAsync().AsTask();
        await task;
    }
4

1 に答える 1

1

OnNavigateFrom はキャンセルできず、ナビゲーションが既に発生した後に発生します。

コードを用意する代わりに、戻るボタンをメッセージ ボックスをポップアップするクリック ハンドラに再配線してみませんか? 次に、ユーザーがボタンをクリックすると、適切なナビゲーションが実行されます。

    private async void OnBackButtonClick(object sender, RoutedEventArgs routedEventArgs)
    {
        MessageDialog md = new MessageDialog("Do you want to save");

        md.Commands.Add(new UICommand("Yes", uiCommandInvokedHandler =>
        {
            // Refresh logic
        }));

        md.Commands.Add(new UICommand("No", uiCommandInvokedHandler =>
        {
            var rootFrame = (Frame)Window.Current.Content;
            rootFrame.Navigate(typeof(MainPage));
        }));

        await md.ShowAsync();
    }
于 2013-01-23T11:31:31.023 に答える