MVVMフレームワーク
実際にアプリケーション開発でMVVMを利用する場合、ここまで説明したViewModel本体の実装やRelayCommandの実装以外にも、ページ遷移時にSilverlightのページ同士でメッセージをやり取りしたり、ViewModelのインスタンスをデバック時と実行時に差し替えたいといった要望が出てくるでしょう。
このような場合、既に存在するMVVMフレームワークを利用するというのも一つの手段です。「MVVM Frameworks Explorer」にSilverlightで利用できるMVVMフレームワークをまとめたリストがあります。
今回は、この中からMVVM LightToolkitの導入方法を簡単に紹介します。
MVVM LightToolkitが提供する機能
MVVM LightToolkitはMVVMパターンの基本機能のみを提供する、きわめて軽量なツールキットです。MVVM LightToolkitは次の機能をSilverlightやWPFに提供します。
ViewModelBase
ViewModelのベースとなるクラスです。INotyfiPropertyChangedインターフェイスの実装や、現在ページがコマンドを発行していいかといった情報や、デザインモードであるかといった情報があらかじめ定義されています。
RelayCommand
MVVM LightToolkitには、今回紹介したジェネリック版のRelayCommandのほかに、引数を受け取らないタイプのRelayCommandも含まれています。
Messenger
一覧画面と詳細画面のように、画面が複数のページに分かれている場合や、メインページとダイアログのようにページ同士でメッセージをやり取りしたい場合に利用するメッセージングの仕組みが提供されます。
メッセージングの利用方法については本連載の範疇を超えているので、ここでは紹介しませんが、WPFやSilverlightoでのメッセージングについてはugaya40さんのブログで詳しくまとまっているので、「MVVM勉強会資料」を参照してください。
Visual Studio、Expression Blend
Visual StudioやExpression Blendのプロジェクトテンプレートや、アイテムテンプレート、コーディングを行う時のコードスニペットが提供されます。
EventToCommandBehavior
今回紹介したInvokeCommandActionビヘイビアの機能に加え、イベント引数(EventArgs)などを指定できるようにしたビヘイビアです。
WindowsPhone7
今のところ、WindowsPhone7に搭載されている実行環境はSilverlight 3ベースです。
Silverlight 3では、コマンドバインディングのサポートがないためにMVVMの適用が難しかったのですが、MVVM LightToolkitを利用すればこの敷居が一気に下がります。