AJ.*_*AJ. 5 c# wpf entity-framework dependency-properties inotifypropertychanged
我正在使用带有Entity Framework模型的MVVM模式在C#中编写桌面应用程序.我倾向于在我的VM中使用DependencyProperties并且(通常)更喜欢这个系统而不是实现INotifyPropertyChanged.我想保持一致.我的虚拟机访问模型中的实体,我设法将事物分开 - 视图除了绑定和命令名称之外没有知道VM,并且模型已知道VM的知识.
在VM中使用INotifyPropertyChanged,更新模型中的实体似乎很容易:
public string Forename
{
get { return CurrentPerson.Forename; }
set
{
if (Forename != value)
{
CurrentPerson.Forename = value;
NotifyPropertyChanged("Forename");
}
}
}
Run Code Online (Sandbox Code Playgroud)
...其中CurrentPerson是由实体数据模型自动创建的Person对象.因此,没有专门用于存储Forename的私有字段.
使用DependencyProperties,似乎我必须使用GetValue和Setvalue创建DP,添加默认属性,然后使用PropertyChangedCallback来更新CurrentPerson实体.在这种情况下调用回调似乎增加了开销,以便与我的其他VM保持一致.
问题是,这些方法中的一种或另一种是我应该做的事情吗?在这种情况下,我应该使用DependencyProperty还是INotifyPropertyChanged?应该指出的一点是,这可能是一个非常大规模的项目(插件和来自不同机器的大量数据库访问),并且所有内容都应该是可重用的,并且模块尽可能"断开连接" .
我建议使用 INotifyPropertyChanged 而不是 DependencyProperty。我远离 ViewModel 中的 DependencyProperty 的主要原因是 DependencyProperty 位于 WindowsBase.dll 中。这让您与 Windows UI 的联系有点太多(至少恕我直言)。
使用 INotifyPropertyChanged 更容易维护,因为它允许各种插件按照他们想要的方式实现它。如果强制使用依赖属性,则所有视图模型都需要从 DependencyObject 继承。
有关 INotifyPropertyChanged 和 DependencyProperty 的使用的更多详细信息,请参阅本文:http://kentb.blogspot.com/2009/03/view-models-pocos-versus.html
另一个支持答案:/sf/answers/54820811/
归档时间: |
|
查看次数: |
824 次 |
最近记录: |