私はEntity FrameworkモデルでMVVMパターンを使用してC#でデスクトップアプリケーションを作成しています。私はVMのDependencyPropertiesを使用する傾向があり、(一般的に)INotifyPropertyChangedの実装よりもこのシステムを好むようになりました。私は物事を一貫させておきたいと思います。私のVMはモデル内のエンティティにアクセスし、物事をかなり別々に保つことができました。ビューにはバインディングやコマンド名以外のVMの知識はなく、モデルはVMの知識を知っています。 VMでINotifyPropertyChangedのを使用してEntity FrameworkでViewModelでDependencyPropertyを使用する
は、モデルのエンティティを更新するために、とても簡単そうです:CurrentPersonは、Personオブジェクトエンティティデータモデルによって自動作成され
public string Forename
{
get { return CurrentPerson.Forename; }
set
{
if (Forename != value)
{
CurrentPerson.Forename = value;
NotifyPropertyChanged("Forename");
}
}
}
...。したがって、Forenameを格納するために特別に作成されたプライベートフィールドはありません。
DependencyPropertiesでは、DPを作成し、GetValueとSetvalueを使用してデフォルトプロパティを追加し、次にCurrentPerson Entityを更新するためにPropertyChangedCallbackを使用する必要があるようです。この状況でコールバックを呼び出すと、他のVMと一貫性を持たせるためにオーバーヘッドが追加されているようです。
これらの方法のいずれかが他の方法であるかどうかは問われます。はになりますか?この例では、DependencyPropertyまたはINotifyPropertyChangedを使用する必要がありますか?注目すべき点の1つは、これは潜在的に非常に大規模なプロジェクト(プラグインと異なるマシンからの多数のデータベースアクセス)であり、すべてが本当に再利用可能であるべきであり、モジュールは可能な限り「切断」されていることです。
ビューモデルに依存関係プロパティを使用する利点は何ですか?言い換えれば、INotifyPropertyChangedが提供する追加的な価値は何を提供していないのでしょうか。 –
私は優れたスピードと、DPに付属している素晴らしいバインディング機能を探しています。自分のビューでXAMLを使用してDPに直接バインドしていることに注意してください。また、不動産価値の変化が頻繁に発生する可能性があります。私が以前に見つけた参考文献から、バインディングのスピードを上げるためには、DPが道のりです。残りのデザインとの一貫性もあります。しかし、Entityオブジェクトに対する個別の修正を行っているすべてのコールバックによって否定された場合、これはどれも良いことではありません。 –