Wpf 附加属性(Attached Properties)

来源:互联网 发布:滑板鞋 知乎 编辑:程序博客网 时间:2024/05/16 13:01

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

 

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

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

 

  1. class School : DependencyObject  
  2. {  
  3.     public static int GetGrade(DependencyObject obj)  
  4.     {  
  5.         return (int)obj.GetValue(GradeProperty);  
  6.     }  
  7.  
  8.     public static void SetGrade(DependencyObject obj, int value)  
  9.     {  
  10.         obj.SetValue(GradeProperty, value);  
  11.     }  
  12.  
  13.     public static readonly DependencyProperty GradeProperty =  
  14.     DependencyProperty.RegisterAttached("Grade", 
    typeof(int), typeof(School), new UIPropertyMetadata(0));  

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

 

 

 

 

  1. class Human : DependencyObject  
  2. {  
  3.  
  4. }
  5. Human human = new Human();  
  6.     School.SetGrade(human, 6);  
  7.     int grade = School.GetGrade(human);  
  8.     MessageBox.Show(grade.ToString());  

 

 

 

原创粉丝点击