ファットな ViewModel を避けるには、ファットなビューも避ける必要があります。Caliburn.Micro を使用すると、 Screens 、 Conductors 、および Composition で説明されているように、Views/ViewModels を構成できます。
短いバージョンでは、MasterViewModel で DetailViewModel タイプのプロパティを定義し、それにちなんで名付けられた ContentControl を MasterView に追加することで、「MasterView」/「MasterViewModel」シェルに「DetailView」と「DetailViewModel」のペアを含めることができます。バインドとアクションは通常どおり機能するため、ファットなモデル/ビューとコマンドのルーティングの両方を回避できます。
もう 1 つのオプションは、詳細のプロパティをターゲットの名前の先頭に追加して、MasterView 要素を DetailViewModel プロパティまたはアクションにバインドすることです。特定の URL がまだ見つからないため、例は記憶からのものです。
次のクラスがあると仮定します。
public class MasterViewModel:Screen
{
public property DetailViewModel MyDetails{get;set;}
}
と
public class DetailViewModel:Screen
{
public property string SomeText{get;set;}
public void DoTheBoogie(){}
}
「MyDetails_SomeText」という名前のMasterViewにコントロールを追加して、DetailViewModel.SomeTextにバインドできます。同じ方法で DoTheBoogie にバインドすることもできます。
ただし、DetailView という名前の別のビューを作成し、MasterView に「MyDetails」という名前の ContentControl を追加することを好みます。これにより、よりクリーンでモジュール化された設計が実現します