我正在用C#編寫一個桌面應用程序,使用帶有實體框架模型的MVVM模式。我傾向於在我的虛擬機中使用DependencyProperties,並且(通常)更喜歡使用此係統來實現INotifyPropertyChanged。我想保持一致。我的虛擬機訪問模型中的實體,並且我設法使事情保持獨立 - 除了綁定和命令名稱以及模型已經知道虛擬機的知識之外,View沒有知道虛擬機的知識。ViewModel在實體框架中使用DependencyProperty
使用INotifyPropertyChanged的在虛擬機,它似乎很容易更新模型中的實體:
public string Forename
{
get { return CurrentPerson.Forename; }
set
{
if (Forename != value)
{
CurrentPerson.Forename = value;
NotifyPropertyChanged("Forename");
}
}
}
...其中CurrentPerson是實體數據模型Person對象自動創建。因此沒有專門爲存儲Forename而創建的私人領域。
使用DependencyProperties,看來我將不得不創建一個DP,使用GetValue和Setvalue添加默認Property,然後使用PropertyChangedCallback來更新CurrentPerson實體。在這種情況下調用回調似乎會增加開銷,以便與我的其他VM保持一致。
因此,問題是否這些方法之一是否我應該做的事情?在這種情況下,我應該使用DependencyProperty還是INotifyPropertyChanged?有一點需要指出的是,這可能是一個非常大規模的項目(插件和來自不同機器的大量數據庫訪問),並且所有事情都應該是可重用的,並且模塊儘可能地「斷開連接」 。
什麼是視圖模型使用依賴屬性的好處?換句話說 - INotifyPropertyChanged沒有提供額外的值。 –
我正在尋找良好的速度和與DP的好結合功能。請記住,我在View中直接綁定到DP的XAML。財產價值變化也可能頻繁發生。從我之前發現的參考文獻來看,爲了加快裝訂速度,DP是要走的路。這與我的其他設計一致。但是,如果所有這些回調都是通過單獨修改實體對象來進行的,那麼這些都不是好事。 –