我知道依赖项属性在WPF中起主要作用。但是我没有得到限制的原因,在绑定中,target属性必须是依赖属性。为什么不能成为任何财产?
答案 0 :(得分:0)
使用DependencyProperty在Google中进行简单搜索会产生一些结果,您可能会发现这些结果相关。例如:http://blog.hackedbrain.com/articles/UnderstandingDependencyObjectAndDependencyProperty.aspx
我猜其中一个原因就是背景。绑定内置于WPF的基础结构中,但C#类属性不属于此。为了使WPF基础结构能够找到可绑定属性,您必须在代码中声明它们。此外,如果您声明属性,则为WPF基础结构提供重要的元数据。
虽然我确实认为如果可以绑定到常规属性会更容易,但这绝对是一个不会因为细节而烦扰你宝贵的大脑的情况......
答案 1 :(得分:0)
如果您有兴趣,可以打开Reflector并查看一些与依赖属性相关的代码和框架中的绑定系统。有很多棘手的事情要允许稳健,高效的属性路径解析和对依赖属性的更改传播。拥有标准基础结构还允许管理更复杂的用例,例如从多个源更新依赖项属性并解决优先级。例如,在动画通过样式设置其默认值的属性时,会经常出现这种情况。
依赖属性的另一个好处是它们在内部封装了很多行为(例如通知,验证和强制),这意味着如果你看到依赖属性,你就会知道肯定会支持某些行为。这与INotifyPropertyChanged形成对比,其中类实现者可能支持也可能不支持所宣传的接口。这意味着课程开发人员的工作量减少了。