(一)依赖属性【源码-09DependencyObj】
依赖属性就是一种可以自己没有值,并能通过使用Binding从数据源获得值(依赖在别人身上)的属性。拥有依赖属性的对象被称为“依赖对象”。与传统的CLR属性和面向对象思想相比依赖属性有很多新颖之处。
①:节省实例对内存的开销
②:属性值可以通过Binding依赖在其他对象上。
依赖属性对内存的使用方式
在传统.NET开发中,一个对象所占用的内存空间在调用new操作符进行实例化的时候已经决定了,而WPF允许对象在被创建的时候并不包含用于存储数据的空间(即字段所占用的空间)、只保留在需要用到数据时能够获得默认值、借用其他对象数据或实时分配空间的能力——这种对象就称为依赖对象(DependencyObject),而这种实时获取数据的能力则依靠依赖属性(DependencyProperty)来实现。在WPF开发中,必须使用依赖对象(DependencyObject)作为依赖属性(DependencyProperty)的宿主,使二者结合起来,才能形成完整的Binding目标被数据所驱动。
public class Student : DependencyObject{public string Name{get { return (string)GetValue(NameProperty); }set { SetValue(NameProperty, value); }}public static readonly DependencyProperty NameProperty =DependencyProperty.Register("Name",//string类型,用这个参数来指明以哪个CLR属性作为这个依赖属性的包装器typeof(string), //用来指明此依赖属性用来存储什么类型的值。typeof(Student));//用来指明此依赖属性的宿主是什么类型,或者说DependencyProperty.Register方法将把这个依赖属性注册关联到那个类型上。}