1、依赖属性主要有以下三个优点
1)依赖属性加入了属性变化通知、限制、验证等功能。这样可以使我们更方便地实现应用,同时大大减少了代码量
2)节约内存:在WinForm中,每个UI控件的属性都赋予了初始值,这样每个相同的控件在内存中都会保存一份初始值。而WPF依赖属性很好地解决了这个问题,它内部实现使用哈希表存储机制,对多个相同控件的相同属性的值都只保存一份
3)支持多种提供对象:可以通过多种方式来设置依赖属性的值。可以配合表达式、样式和绑定来对依赖属性设置值
2、依赖属性的定义
(参照代码:Person.cs)
1)让依赖属性的所在类型继承自DependencyObject类。代码片段(propdp)
2)使用public static 声明一个DependencyProperty的变量,该变量就是真正的依赖属性。
3)在类型的静态构造函数中通过Register方法完成依赖属性的元数据注册。
4)提供一个依赖属性的包装属性Name,通过这个属性来完成对依赖属性的读写操作。
5)在画面可以通过如下方式来绑定依赖属性Name
<Label content="{Binding Name,RelativeSource={RelativeSource AncestorType=ContentControl(xml的类名)}}"
3、依赖属性的优先级
(参照代码