1

ユーザーが戻るキーを押したときに終了を確認するダイアログを表示したい。ネイティブの MessageBox を使用して実行できることはわかっています。ただし、代わりに winphone ツールキットの CustomMessageBox を使用すると、キャンセルされたキャンセル イベントは再開されません。

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    e.Cancel = true;
    CustomMessageBox messageBox = new CustomMessageBox()
        {
            Caption = "Exit",
            Message = "Do you want to exit?",
            LeftButtonContent = "Yes",
            RightButtonContent = "No"
        };
        messageBox.Dismissed += (s1, e1) =>
        {
            switch (e1.Result)
            {
                case CustomMessageBoxResult.LeftButton:
                  //app doesn't exit as expected
                    e.Cancel = false;
                    break;
                case CustomMessageBoxResult.RightButton:
                    break;
                case CustomMessageBoxResult.None:
                    break;
                default:
                    break;
            }
        };      
    messageBox.Show();
}

イベントをキャンセルしないと、アプリはメッセージ ボックスを表示せずに終了します。Show を呼び出してスレッドをロックしようとすると、メッセージ ボックスが表示されません。代わりにTerminateまたは例外を使用してアプリを終了できることはわかっていますが、適切に終了してApplication_Closingを呼び出すことができるようにしたいです。助けてください!感謝。

4

2 に答える 2

0

カスタム メッセージ ボックスを使用する場合は、back イベントをキャンセルする以外に選択肢はありません。もしそうなら、あなたが言及した問題で、プログラムでアプリケーションを終了する必要があります。

そこから抜け出す方法はありません。OnBackKeyPressCustomMessageBox がそのコントロールを表示できるように UI スレッドを解放する必要があり、そのスレッドはイベントを終了するまで解放されません。ネイティブのメッセージボックスに固執するだけです。それが最善です。

于 2013-07-01T06:06:20.483 に答える