Wpf 附加属性(Attached Properties)

    技术2022-05-19  20

    附加属性是说一个属性本来不属于某个对象,但由于某种需求而被后来附加上。也就是把对象放入一个特定环境后对象才具有的属性(表现出来就是被环境赋予的属性)就称为附加属性(Attached Properties)。

     

    附加属性的作用就是将属性与数据类型(宿主)解耦,让数据类型的设计更加灵活。

    附加属性的本质就是依赖属性,二者仅在注册和包装器上有一点区别。

     

    class School : DependencyObject   {       public static int GetGrade(DependencyObject obj)       {           return (int)obj.GetValue(GradeProperty);       }         public static void SetGrade(DependencyObject obj, int value)       {           obj.SetValue(GradeProperty, value);       }         public static readonly DependencyProperty GradeProperty =       DependencyProperty.RegisterAttached("Grade", typeof(int), typeof(School), new UIPropertyMetadata(0));   } 

    GradeProperty就是一个DependencyProperty类型成员变量,声明时一样使用public static readonly三个关键字共同修饰。唯一的不同就是注册附加属性使用的是名为RegisterAttached的方法,但参数却与使用Register方法无异。附加属性的包装器也与依赖属性不同--依赖属性使用CLR属性对GetValue和SetValue两个方法进行包装,附加属性则使用两个方法分别进行包装--这样做完全是为了在使用的时候保持语句行文上的通畅

     

     

     

     

    class Human : DependencyObject   {     }Human human = new Human();      School.SetGrade(human, 6);       int grade = School.GetGrade(human);       MessageBox.Show(grade.ToString());  

     

     

     


    最新回复(0)