简单来说,依赖属性就是一种可以自己没有值,并能通过使用Binding从数据源获得值(依赖在别人身上)的属性。拥有依赖属性的对象被称为”依赖对象“。与传统的CLR属性和面向对象思想相比依赖属性的新颖之处:
1. 节省实例对内存的开销。
2. 属性值可以通过Binding以来在其他对象上。
依赖对象对内存的使用方式
传统的.NET开发中,一个对象所占用的内存空间在调用new操作符进行实例化的时候就已经决定了,而WPF允许对象在被创建的时候并不包含用于存储数据的空间(即字段所占用的控件),只保留在需要用到数据时能够获得默认值、借用其他对象数据或实时分配空间的能力——这种对象就成为依赖对象(Dependency Object)而它这种实时获取数据的能力则依靠依赖属性(Dependency Property)来实现。WPF开发中,必须使用依赖对象作为依赖属性的宿主,使二者结合起来,才能形成完整的Binding目标被数据所驱动。DependencyObject在WPF系统中时相当底层的一个基类。
WPF的所有UI空间都是依赖对象。WPF的类库在设计时充分利用了依赖属性的优势,
UI控件的绝大多数属性都已经是依赖化了。