MessageBoxの利用方法
WinFormsにおけるMessageBoxに該当する機能としてUWPにはMessageDialogとContentDialogが存在します。
この二つのコントロールの記述方法は以下が基本になります。
メッセージのみ
MessageDialogの例
await new MessageDialog("コンテンツ", "タイトル").ShowAsync();
ContentDialogの例
var msg = new ContentDialog(); msg.Title = "タイトル"; msg.Content = "コンテンツ"; msg.PrimaryButtonText = "OK"; await msg.ShowAsync();
C#のみで記述する場合MessageDialogの方がコード量が少なく済む為、試験目的で使う分にはこちらの方が使い勝手が良いですね。
MessageDialogはWinFormsのようにアプリ外にでる形に、ContentDialogではアプリ内に収まるように表示されます。
___________________________________________________________________________________
続いてブロック質問を使う場合の例です。
ブロック質問あり
MessageDialogの例
var msg = new MessageDialog("処理を継続します", "継続確認"); msg.Commands.Add(new UICommand("継続")); msg.Commands.Add(new UICommand("中止")); var res = await msg.ShowAsync(); if(res.Label == "継続") { //継続処理 }
ContentDialogの例
var msg = new ContentDialog(); msg.Content = "処理を継続します"; msg.Title = "継続確認"; msg.PrimaryButtonText = "継続"; msg.SecondaryButtonText = "中止"; var res = await msg.ShowAsync(); if(res == ContentDialogResult.Primary) { //継続処理 }
どちらも処理の流れは同一です。
MessageDialogではボタン要素を追加していくイメージですが、ContentDialogでは最初から定義されているプロパティにテキストを設定する事でボタンが追加されます。
またコードとは関係ないですが回答ボタンのテキストは"OK"や"はい"など汎用的な単語を使わず質問に対応する具体的な単語を使うようにします。
___________________________________________________________________________________
ContentDialogはXAMLで表示される内容をカスタムすることができます。
以下の例や会員情報の編集などダイアログ内で処理を行いたい場合などに有効です。
カスタムContentDialog
<ContentDialog x:Name="Dialog1" PrimaryButtonText="閉じる" Title="テーマを選択してください" > <StackPanel> <RadioButton Content="Light" Click="テーマ切り替え" /> <RadioButton Content="Dark" Click="テーマ切り替え" /> </StackPanel> </ContentDialog>
await this.Dialog1.ShowAsync();
___________________________________________________________________________________
UWPではMessageDialogよりもContentDialogを推奨しています。[1]
特に理由がない限りContentDialogを利用するようにしましょう。
[1].MS謹製アプリでは普通に使われていますが...
参考:
MessageDialogのガイドライン
https://msdn.microsoft.com/ja-jp/library/windows/apps/hh738363.aspx
ContentDialogのガイドライン
https://msdn.microsoft.com/ja-jp/library/windows/apps/dn997764.aspx