ViewMakerの開発シナリオ
ViewMakerではViewModelを作成して、作成したViewModelの型情報を利用しながら自動または手動でViewを作成します。
自動的にViewを作成する場合、プロパティやクラスに生成用のヒントを属性として付与することができます。また、中間的なレイアウト構造データをプログラムから生成することもできます。手動の場合は、ViewUtilで表示した画面から「Layout Editor」を起動して中間的なレイアウト構造データを編集することでViewを作成します。もちろん、プログラムのヒントから自動的に作成したものを手動で微調整のようなことも可能です。さらに、一旦生成したXAMLをUserControlに張り付けるとVisual Studioでの編集が可能になります。
まとめるとViewの生成には以下の方法が利用できます。
-
- クラスやプロパティの型情報や属性を利用して生成
- 中間的なレイアウト構造データをプログラムで構築してそれを元にViewを生成(IViewLayoutGeneratorProvider)
- レイアウトエディタ(Layout Editor)を利用してレイアウト構造を定義しそれをもとにViewを生成
- 生成したXAMLをUserControlに配置して該当ViewModelのViewに該当UserControlを指定する方法
どのシナリオが良いかは開発者の力量や作るものの特性によって変わりますが、今回ViewMakerを作成していて感じるメリットの一つにXAMLを書かないメリットです。これはXAMLの知識が要らないというのもありますが、それ以上にC#ですべて完結することです。項目を1つ増やしたければViewModelにプロパティを追加しさいすればOKです。DRYの原則をMVVMの中で実現できるのです。
さらに、ViewModelは通常のクラスとして作成されるため、複雑な構造をもつレイアウトに対してOOPのテクニックを利用できることを意味しています。ViewMakerではさまざまな選択によって表示内容が動的に変わりますが、これをViewMakerのView生成機能で対応しています。これをXAMLで記述するとかなり大変になることは目に見えています。
ViewModelファーストな開発
細かなレイアウトを気にせずに画面の機能をViewModelで作成してあとで詳細なレイアウトを作成する方法はかなり良い開発スタイルのように感じています。ViewMakerを使わないでWPFだけでも基本的に可能なので、力のある開発者の方は一度ViewModelファーストを試すことをお勧めします。この方法は外科医をスーパー外科医にしてくれます。