libro
www.tuyano.com
C#ではじめるWindows 8アプリ開発入門

メッセージダイアログとポップアップメニュー (2/5)

作成:2014-02-01 11:44
更新:2014-02-01 11:54

■コマンドボタンを追加する

MessageDialogのメッセージダイアログでは、表示するボタンを変更することができます。

表示するボタンは、「UICommand」というクラスとして用意されます。これは、正しくは「ボタンのクラス」というわけではなくて、「UIで実行するコマンドのクラス」です。このUICommandで、実行するコマンドを作ってMessageDialogに組み込むと、それをもとにしてボタンを表示するようになっているんですね。では、UICommand作成について整理しましょう。

●UICommandインスタンスの作成
変数 = new UICommand( テキスト);
引数には、ダイアログに表示されるボタンのテキストを指定します。非常にシンプルですね。

●UICommandの組み込み
《MessageDialog》.Commands.Add(《UICommand》);
MessageDialogクラスには、Commandsというプロパティがあります。これは、UICommandをまとめて保管するコレクションが設定されたプロパティです。このコレクションにUICommandインスタンスを追加することで、そのIUICommandがボタンとして表示されるようになるのです。

●返値を処理する
UICommand 変数= await 《MessageDialog》.ShowAsync();
ShowAsyncは、選択したボタンのUICommandを返すようになっています。ですので、こんな具合に返値を取り出せば、どのボタンを押したのかチェックすることができます。なお、返値はIUICommandというタイプになっていますが、これはUICommandのベースとなっているインターフェイスです。

このUICommandを使えば、簡単にダイアログのボタンをカスタマイズできます。下に簡単なサンプルを挙げておきました。ボタンを押すとダイアログを表示し、そのボタンを押したらそのボタン名をTextBlockに表示します。

UICommandで表示されるボタンのテキストは、Labelというプロパティで取り出せます。返値のUICommandからLabelを取り出して処理すれば、「押したボタンを使った処理」が簡単に作れますね!

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace MyWin8App
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private async void button1_click(object sender, RoutedEventArgs e)
        {
            string msg = "Hello, " + textbox1.Text + "!";
            MessageDialog dlog = new MessageDialog(msg,"Hello");

            UICommand cmd1 = new UICommand("最初の");
            UICommand cmd2 = new UICommand("真ん中");
            UICommand cmd3 = new UICommand("最後の");
            dlog.Commands.Add(cmd1);
            dlog.Commands.Add(cmd2);
            dlog.Commands.Add(cmd3);

            IUICommand cmd = await dlog.ShowAsync();
            textblock1.Text = cmd.Label + "を選んだね。";
         }
        
    }
}

※関連コンテンツ

「C#ではじめるWindows 8アプリ開発入門」に戻る