【发布时间】:2010-09-22 10:25:50
【问题描述】:
在 Model-View-ViewModel 架构 WPF 应用程序中实现 ViewModel 时,似乎有两个主要选择如何使其可数据绑定。我已经看到使用DependencyProperty 作为 View 将要绑定的属性的实现,并且我已经看到 ViewModel 实现了 INotifyPropertyChanged。
我的问题是我什么时候应该更喜欢一个而不是另一个?有性能差异吗?将 ViewModel 依赖项提供给 WPF 真的是一个好主意吗?在做出设计决策时我还需要考虑什么?
【问题讨论】:
-
请参阅stackoverflow.com/questions/1329138/… 了解编译器检查的实现 INotifyPropertyChanged 的方式。避免将属性名称作为魔术字符串。
-
在实现 INotifyPropertyChanged 的类中,依赖属性和普通属性之间通常存在主要区别。依赖属性可以是数据绑定中的源或目标,但具有 INotifyPropertyChanged 支持的普通属性只能用作源。所以这些解决方案不能完全互换。数据绑定基础结构需要 DP 作为目标才能工作,但源可能是具有 INotifyPropertyChanged 支持的普通属性或通用 DP。
-
参见stackoverflow.com/a/10595688/200442 了解.net 4.5 实现
INotifyPropertyChanged的方式。
标签: wpf data-binding architecture mvvm dependency-properties