メッセージダイアログとポップアップメニュー (2/5)
作成:2014-02-01 11:44
更新:2014-02-01 11:54
更新:2014-02-01 11:54
■コマンドボタンを追加する
MessageDialogのメッセージダイアログでは、表示するボタンを変更することができます。
表示するボタンは、「UICommand」というクラスとして用意されます。これは、正しくは「ボタンのクラス」というわけではなくて、「UIで実行するコマンドのクラス」です。このUICommandで、実行するコマンドを作ってMessageDialogに組み込むと、それをもとにしてボタンを表示するようになっているんですね。では、UICommand作成について整理しましょう。
●UICommandインスタンスの作成
●UICommandの組み込み
●返値を処理する
このUICommandを使えば、簡単にダイアログのボタンをカスタマイズできます。下に簡単なサンプルを挙げておきました。ボタンを押すとダイアログを表示し、そのボタンを押したらそのボタン名をTextBlockに表示します。
UICommandで表示されるボタンのテキストは、Labelというプロパティで取り出せます。返値のUICommandからLabelを取り出して処理すれば、「押したボタンを使った処理」が簡単に作れますね!
表示するボタンは、「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を取り出して処理すれば、「押したボタンを使った処理」が簡単に作れますね!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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 + "を選んだね。"; } } }
※関連コンテンツ