PrismでXamarin.Formsする方法

C#Xamarin.FormsでPrismでMVVM実装#12_メッセージBoxを表示する方法

前回までは画面遷移のやり方を見ていきました。今回はPrismでのメッセージBoxの出し方を見ていきたいと思います。メッセージBoxもViewModelから表示するやり方が,Prismには用意されています。

MainPage.xamlへのボタンの追加

MainPageにボタンを追加して,そのボタンを押したときにメッセージボックスが表示されるように実装してみたいと思います。

バインドしているMessageCommandという名前はこれからViewModel側に作成する予定のDelegateCommandの名前です。

MainPageViewModel.csの変更

MainPageViewModelにはMessageCommand という名前のDelegateCommand を作成しています。これはView側で指定した名前と同じにしています。MessageCommandが発行されたときに動作するメソッドはMessageShowというメソッドにしてその中でメッセージ表示をしています。

メッセージの表示にはPageDialogServiceが必要ですが,これはViewModelのコンストラクタに「IPageDialogService pageDialogService」と記述して受け取れるようにしておけば,あとはPrismが自動的に値をはめ込んでくれます。

だからコンストラクタで取得したpageDialogServiceをprivate変数として「_pageDialogService」に保持しておいて,それをMessageShowメソッドで使用しています。pageDialogServiceにドットを付けるとDisplayAlertAsyncというメソッドが表示されます。これはXamarin.Formsで,普通にContentPageで使用する時と全く同じ関数で,同じ使い方ができるので,メッセージを出すときは

「_pageDialogService.DisplayAlertAsync(“たいとる”, “めっせーじ”, “OK”);」

と書けば,メッセージが表示できます。

OKとキャンセルのメッセージにしたい場合は引数を4つにして「_pageDialogService.DisplayAlertAsync(“たいとる”, “めっせーじ”, “OK”, “キャンセル”);」とすればOKキャンセルのメッセージになります。

この場合はawaitしておかないと応答を待たずに次の行に非同期として動作するため,asyncawaitの対応は必要です。

実行

ここまで書けたら一度実行してみます。

MESSAGEボタンが表示されるのでこれを押してメッセージが出れば成功です。

うまくメッセージが出たので成功です。

以上がメッセージボックスの表示方法となります。

 

Xamarin.FormsでPrismを使ってMVVMで実装する方法