依赖项属性语法格式

 class MyClass : DependencyObject
    {
        public static readonly DependencyProperty MyfieldProperty = DependencyProperty.Register("Myfield", typeof(int), typeof(MyClass), new PropertyMetadata(0), new ValidateValueCallback(new MyClass().MyValidateMethod));
        public int Myfield
        {
            get { return (int)GetValue(MyfieldProperty); }
            set { SetValue(MyfieldProperty, value); }
        }
        public bool MyValidateMethod(object value)
        {
            return true;//这里实现验证
        }
    }

 Register方法有三种重载

Register(String, Type, Type)   使用指定的属性名称、属性类型和属性所在对象的类型。

Register(String, Type, Type, PropertyMetadata) 使用指定的属性名称、属性类型、属性所在对象的类型和属性元数据注册依赖项属性。

Register(String, Type, Type, PropertyMetadata, ValidateValueCallback) 使用指定的属性名称、属性类型、属性所在对象的类型、属性元数据和属性的值验证回调来注册依赖项属性。

在Register中,各个参数解释如下:

String:依赖属性的名字(不加Property,即字段的名字);

Type:属性的类型;

Type:属性所属对象的类型;

PropertyMetadata:依赖项对象的属性元数据,是一个PropertyMetadata类型,可能赋初始值。PropertyMetadata有一个object的构造函数;

ValidateValueCallback:表示用作回调的方法,这个类型是一个委托,用于验证依赖项属性的值的有效性,因为是委托,故它的构造参数为一个方法名。

最后,来构造依赖属性,与普通的属性有所区别:

Public 属性类型 属性名

{

        Get {return (属性类型)this.GetValue(字段名); }

        Set {this.SetValue(字段名, value); }

}

其中的GetValue和SetValue都是调用父类DependencyObject的方法。

 

posted on 2015-09-27 17:19  汇编  阅读(331)  评论(0编辑  收藏  举报

导航