Dependency Property
2008-06-19 10:07 DQ 阅读(517) 评论(0) 收藏 举报
好久没有写Blog了,一方面是由于项目紧,一方面是由于自己太懒。闲话不说,今天先讲讲对Dependency Property的理解。
故名思意,之所以称为Dependency Property是因为它们依赖于一些其它的Property和外在的影响。区别与C#中其它属性的理解,在WPF中,Dependency Property允许以一般的方式自动进行大部分的通知。它的定义如下:
public static readonly DependencyProperty [属性名]
它是public且是static的,这意味着成员变量和类有关联,而非和对象有关联。静态的只读类成员只能在“类成员变量定义本身”或“静态构造函数”中定义。Dependency Proerty是通过调用静态的DenpencyProperty.Register("关联名称",typeof(属性类型),typeof("注册此property的类型")这个方法中实现。默认情况如果改变一个对象的Dependency Property值,其会向其孩子进行传递,这样就可以产生一系列的改变。在进行Register注册时还可以加上校验的回调方法。
Dependency Property中有一个FrameworkPropertyMetadata属性,通过它可以设置与AffectsMeasure(重新计算尺寸)和AffectsRender(重绘)以及默认值和回调方法等属性,这样我们就可以控制界面的显示过程。
最后,还可以通过AddOwner方法,将孩子对象的属性注册给父级对象,让其称为孩子的拥有者,这样就可以通过父级对象改变其所拥有的孩子对象的值。
故名思意,之所以称为Dependency Property是因为它们依赖于一些其它的Property和外在的影响。区别与C#中其它属性的理解,在WPF中,Dependency Property允许以一般的方式自动进行大部分的通知。它的定义如下:
public static readonly DependencyProperty [属性名]
它是public且是static的,这意味着成员变量和类有关联,而非和对象有关联。静态的只读类成员只能在“类成员变量定义本身”或“静态构造函数”中定义。Dependency Proerty是通过调用静态的DenpencyProperty.Register("关联名称",typeof(属性类型),typeof("注册此property的类型")这个方法中实现。默认情况如果改变一个对象的Dependency Property值,其会向其孩子进行传递,这样就可以产生一系列的改变。在进行Register注册时还可以加上校验的回调方法。
Dependency Property中有一个FrameworkPropertyMetadata属性,通过它可以设置与AffectsMeasure(重新计算尺寸)和AffectsRender(重绘)以及默认值和回调方法等属性,这样我们就可以控制界面的显示过程。
最后,还可以通过AddOwner方法,将孩子对象的属性注册给父级对象,让其称为孩子的拥有者,这样就可以通过父级对象改变其所拥有的孩子对象的值。
我的新征途
浙公网安备 33010602011771号