酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

WindowsストアアプリでMessageDialogクラスを使ってメッセージダイアログを表示する その2

メッセージダイアログを表示させる その1」の続きになります。複数のボタンを表示させる方法についてご紹介しました。

本記事では複数個のボタンを表示したメッセージダイアログで、どのボタンが選択されたのかを取得する方法をご紹介します。

選択したボタンのインデックス値を取得する

private async void button5_Click(object sender, RoutedEventArgs e)
{
    // メッセージダイアログのインスタンス生成
    var dialog = new MessageDialog("○○処理を実行しますか?", "確認");

    // あらかじめボタンのラベルを定義する
    var cmdOK = new UICommand("実行")
    {
        Id = 0
    };
    var cmdCancel = new UICommand("キャンセル")
    {
        Id = -1
    };

    // コマンドを追加
    dialog.Commands.Add(cmdOK);
    dialog.Commands.Add(cmdCancel);

    // ダイアログの表示処理を開始
    var selected = await dialog.ShowAsync();
    switch ((int)selected.Id)
    {
        case 0:
            // 実行を押した時の処理
            break;
        case -1:
        default:
            // キャンセルを押した時の処理  
            break;
    }
}

UICommandを使ってボタンが押されたときに処理させる

private async void button6_Click(object sender, RoutedEventArgs e)
{
    // メッセージダイアログのインスタンス生成
    var dialog = new MessageDialog("○○処理を実行しますか?", "確認");

    // あらかじめボタンのラベルを定義する
    var cmdOK = new UICommand("実行")
    {
        Invoked = new UICommandInvokedHandler(target =>
        {
            // 実行を押した時の処理
        })
    };
    var cmdCancel = new UICommand("キャンセル")
    {
        Invoked = new UICommandInvokedHandler(target =>
        {
            // キャンセルを押した時の処理     
        })
    };

    // コマンドを追加
    dialog.Commands.Add(cmdOK);
    dialog.Commands.Add(cmdCancel);

    // ダイアログの表示処理を開始
    await dialog.ShowAsync();
}

関連