一、概要
C#中属性是抽象模型的核心部分,而依赖属性是专门针对WPF的。
在WPF库实现中,依赖属性使用普通的C#属性进行了包装,使得我们可以通过和以前一样的方式来使用依赖属性。
依赖属性优点如下:
它内部实现使用哈希表存储机制,对多个相同控件的相同属性的值都只保存一份。
二、依赖属性的定义
定义一般遵循如下步骤:
- 定义一个类继承自DependencyObject类。
- 使用public static 声明一个DependencyProperty的变量,该变量就是真正的依赖属性。
- 在类型的静态构造函数中通过Register方法完成依赖属性的注册。
- 提供一个依赖属性的包装属性,通过这个属性来完成对依赖属性的读写操作。
参考代码如下:
1 public class DataSource : DependencyObject 2 { 3 static DataSource() 4 { 5 // Using a DependencyProperty as the backing store for Title. This enables animation,styling,binding,etc... 6 TitleProperty = 7 DependencyProperty.Register("Title",typeof(string),typeof(DataSource),new PropertyMetadata("DefaultTitle",new System.Windows.PropertyChangedCallback(PropertyChangedCall))); 8 } 9 public static readonly DependencyProperty TitleProperty; 10 public string Title 11 { 12 get { return (string)GetValue(TitleProperty); } 13 set { SetValue(TitleProperty,value); } 14 } 15 16 public static void PropertyChangedCall(DependencyObject d,DependencyPropertyChangedEventArgs e) 17 { 18 19 } 20 21 }
在VS中输入“propdp”然后连续按两次Tab键。
三、依赖属性的优先级