Commandでユーザーの入力を検知する

Command

MVVMにおいて、Viewで受け付けるユーザーからの入力(Buttonを押すなど)はCommandとしてViewModelで処理を行います。

CommandはICommandインターフェースを実装したクラスが必要となります。
MVVMLightToolkitではRelayCommandというクラスがあるのでこれをつかって、Commandを実装してきます。

Commadを実装するところは、ViewModelになります。
MainViewModel.csのメンバとして、RelayCommand型のCalcCommandを追加します。

続いて、CalcCommandを初期化するために、コンストラクタで
CalcCommandをnewします。そのとき、コンストラクタ引数としてActionをいれます。
そうすることで、そのCommandを実行した時、Action内が呼び出されます。
つまり、ViewからCommandが送られたら、Command内のActionを実行し、Action内部でModelを使って計算を行います。

MainViewModel.csの全体はこのようになります。

ViewからCommandを呼び出す

では、ViewからCommandを呼び出してみましょう。

今回はButtonが押されたときにCommandを実行できればよいので、
ButtonのCommandプロパティにCalcCommandをBindingします。
ButtonはClickイベントに反応してCommandプロパティにバインドされているCommandを実行しますが、もし他のイベントなどに反応させたかったらビヘイビアを使います。

これでCommandは実装できました。
実行して、Calcボタンを押すと2つの値が足されていたら成功です。

9