PrismでXamarin.Formsする方法

C#Xamarin.FormsでPrismでMVVM実装#06 ボタンのデータバインディング

前回はラベルのデータバインディングの方法を見ていきました。今回はボタンのクリックイベントをどのようにしてバインディングするかを見ていきたいと思います。

ボタンのクリックイベントをバインドする方法

ボタンはCommandというものにバインドします。「Command=”{Binding ButtonC}”」という感じで記述します。「ButtonC」というのは任意の名前で,MainPageViewModelに作成予定のプロパティです。まだ作成していません。XAMLの記述は以上です。ViewModel側の記述に移りましょう。

ボタンクリックイベントをViewModel側で実装する場合はDelegateCommandというクラスをプロパティとして宣言します。プロパティの名前は,先ほどXAMLでBindingとして定義した「ButtonC」という名前にしておく必要があります。「public DelegateCommand ButtonC { get; set; }」の部分です。

あとはButtonCプロパティをコンストラクタの始めの方でインスタンスを生成します。「ButtonC = new DelegateCommand(SetText);」の部分です。「SetText」というのは,ボタンがクリックされたときに動作させるメソッドを登録しておきます。今回はボタンが押されたときにラベルのテキストの値を変化させる予定なので,SetTextという名前にしていますが,当然この名前は任意の名前を登録することになります。今回はSetTextという名前にするのでこの関数を作成しています。「private void SetText()」の部分です。ここでLabelCの値をEEEに変更しています。これでButtonCのボタンをクリックするとSetTextメソッドが動作するため,ラベルの値がEEEに変化するはずです。ここで一度実行してみます。   起動直後は,ラベルの値は「DDD」になっています。「BUTTON C」をクリックすると「EEE」になることを確認してみましょう。

ボタンを押下したら「EEE」になったことが確認できました。

以上がボタンのバインディングの方法です。

ここまでで,ラベルとボタンのバインディングの方法を解説しました。これでViewとViewModelに分けても動作する事ができるようになったという事です。次回はViewとViewModelに分けたことで,本当にテストがしやすくなっているのかを検証していきたいと思います。

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