依赖属性定义:
在WPF当中, 所有支持绑定的属性本质上它都是封装后的依赖属性。
那么也就是说, 只有依赖属性才可以进行绑定。通过DependencyProperty类的静态Register方法注册, 如下所示:
class Student : DependencyObject { public string Name { get { return (string)GetValue(NameProperty); } //依赖属性和附加属性定义的不同 set{ SetValue(NameProperty, value); } } public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Student)); }
- 第一个参数为string类型,表示指明以哪个CLR属性作为这个依赖属性的包装器。就是代码
public string Name { get { return (string)GetValue(NameProperty); } set { SetValue(NameProperty, value); } }
- 第二个参数指明此依赖属性用来存储什么样的值。
- 第三个参数用来指明此依赖属性的宿主是什么类型,或者说DependencyProperty.Register方法要将这个依赖属性注册到哪个类型上。加
附加属性定义:
附加属性也是依赖属性, 只是它的注册方式与表达方式略有不同 ,一般作为公共使用,如下所示
public static bool GetIsRotate(DependencyObject obj) { return (bool)obj.GetValue(IsRotateProperty); } public static void SetIsRotate(DependencyObject obj, bool value) { obj.SetValue(IsRotateProperty, value); }
public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.RegisterAttached("MyProperty", typeof(int), typeof(ownerclass), new PropertyMetadata(0));
-
参数一(IsRotate):要注册的附加属性的名称。
-
参数二(typeof(bool)):声明属性IsRotate的类型是bool。
-
参数三(typeof(YMDemo)):依赖属性IsRotate的所有者类型,即定义该附加属性的类是YMDemo。
-
参数四的类型是PropertyMetadata