ビューの状態を持つ ViewModel を正しく認識しています。概念的には、モデルの状態はモデルの一部ですが、特定のシナリオによって異なる場合があります。モデルをデータと考えてください。シリアル化できるもの、サーバーから取得できるもの、および/またはデータベースに保持できる/保持する必要があるものとして考えてください。
たとえば、ショッピング カートがある場合、配送カートのアイテムは明らかにモデルの一部です。ただし、チェックアウト プロセスの状態 (支払い方法が受領された、支払い方法が確認された、ユーザーが確認された) は、どちらの方法でも構いません。
ボイラープレートに関しては、妥当な量のボイラープレートでうまく機能するパラダイムは、ViewModel 内のモデル全体を含み (実際には、c# で参照)、モデル内のすべてのプロパティのゲッターとセッターを適切な偶数で公開することです。通知。例えば
class PersonModel {
public string firstName { get; set; }
public string lastName { get; set; }
}
class PersonViewModel : INotifyPropertyChanged {
private PersonModel model;
// next 4 lines can be factored out to a BaseViewModel class
private PropertyChangedEventHandler PropertyChanged;
private raise(string propName) {
this.PropertyChanged( new PropertyChangedEventArgs(propName) );
}
// ... repeat for each property in the model
public string firstName {
get { return model.fistName; }
set { model.firstName = value; raise('firstName'); }
}
public string lastName {
get { return model.lastName; }
set { model.lastName = value; raise('lastName'); }
}
}