ビューモデルは、独自のプロパティを宣言して、モデルの詳細をビューから隠す必要があります。これにより、柔軟性が最大限に高まり、ビューモデルタイプの問題がモデルクラスに漏れるのを防ぐことができます。通常、ビューモデルクラスは委任によってモデルをカプセル化します。例えば、
class PersonModel {
public string Name { get; set; }
}
class PersonViewModel {
private PersonModel Person { get; set;}
public string Name { get { return this.Person.Name; } }
public bool IsSelected { get; set; } // example of state exposed by view model
public PersonViewModel(PersonModel person) {
this.Person = person;
}
}
は覚えておいてください:このモデルは、それを消費しているビューモデルについて何も知らないはず、とビューモデルは、それを消費しているビューについては何も知りません。バックグラウンドで潜んでいるモデルについては、このビューは何も知らないはずです。したがって、ビューモデルのプロパティの背後にモデルをカプセル化します。
これらの単純なシナリオでは、ビューモデルを持つという利点はありません。あなたがアンドゥ機能などを実装したいと言うなら、そのロジックはVMに入り、モデルプロパティをラップします。 – rolls