WPF附加属性
2012-12-27 14:38
127 查看
1、定义:一个属性原来不属于某个对象,但由于某种需求而被后来附加上去。附加属性的本质是依赖属性。
2、作用:将属性与数据类型解耦,让数据类型的设计的更加灵活。
3、举例:Human,School。Human中的一个人,他如果在学校里,就会有成绩等;如果在公司里,他就有部门等。此时的成绩和部门就是附加属性。
4、使用:
4.1) 使用DependencyProperty. RegisterAttached 方法向属性系统注册附加属性。RegisterAttached方法有三种重载的实现方式。最常用的是使用指定的属性名称属性类型和属性所有者的类型来注册附加属性。
4.2) 实现static型的设置属性值的方法。如下面代码中的GetGrade方法和SetGrade方法。这两个方法也可以不用实现,而在调用的时候直接使用GetValue方法和SetValue方法来实现,但是这样不符合常规的思维方式。一般不会这么使用。
4.3) 调用的时候就可以使用SetGrade方法向一个对象动态地添加属性了。例如下面代码中的Human类中原先没有Grade这么一个属性,使用School类中的附加属性,则可以使School中的人具有Grade这个属性。
代码如下:School类
Human类
附加属性的使用
4.4) 当然附加属性也可以使用Binding依赖在其他数据对象上。
注:附加属性是不同的对象使用者赋予对象的属性。这些属性可以动态加载与卸载。
说明:本文从<work hard work smart>修改而来。在文中作者添加了部分操作过程相关的内容。
2、作用:将属性与数据类型解耦,让数据类型的设计的更加灵活。
3、举例:Human,School。Human中的一个人,他如果在学校里,就会有成绩等;如果在公司里,他就有部门等。此时的成绩和部门就是附加属性。
4、使用:
4.1) 使用DependencyProperty. RegisterAttached 方法向属性系统注册附加属性。RegisterAttached方法有三种重载的实现方式。最常用的是使用指定的属性名称属性类型和属性所有者的类型来注册附加属性。
4.2) 实现static型的设置属性值的方法。如下面代码中的GetGrade方法和SetGrade方法。这两个方法也可以不用实现,而在调用的时候直接使用GetValue方法和SetValue方法来实现,但是这样不符合常规的思维方式。一般不会这么使用。
4.3) 调用的时候就可以使用SetGrade方法向一个对象动态地添加属性了。例如下面代码中的Human类中原先没有Grade这么一个属性,使用School类中的附加属性,则可以使School中的人具有Grade这个属性。
代码如下:School类
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)); }
Human类
class Human:DependencyObject { }
附加属性的使用
private void Button_Click(object sender, RoutedEventArgs e) { Human human = new Human(); School.SetGrade(human, 6); int grade = School.GetGrade(human); MessageBox.Show(grade.ToString()); }
4.4) 当然附加属性也可以使用Binding依赖在其他数据对象上。
注:附加属性是不同的对象使用者赋予对象的属性。这些属性可以动态加载与卸载。
说明:本文从<work hard work smart>修改而来。在文中作者添加了部分操作过程相关的内容。
相关文章推荐
- WPF附加属性控制TextBox的输入为金额格式
- WPF如何利用附加属性修改ShowGridLines效果详解
- WPF学习之依赖属性和附加属性
- WPF原理剖析——依赖属性和附加属性
- WPF Adorner+附加属性 实现控件友好提示
- WPF(附加属性)
- WPF附加属性
- WPF 附加属性
- wpf 如何在后台设置附加属性的值
- WPF Silverlight 附加属性(AttachedProperty)
- WPF(附加属性)
- 谈WPF中的附加属性
- WPF下通过附加属性实现单实例启动
- WPF附加属性的Set函数不调用的问题
- [UWP]为附加属性和依赖属性自定义代码段(兼容UWP和WPF)
- WPF:依赖属性和附加属性示例
- WPF QuickStart系列之附加属性(Attached Property)
- WPF菜鸟谈之依赖属性,附加属性(附加《深入浅出WPF》pdf下载)
- WPF 自定义附加属性
- WPF ListView显示GridLine(可选), 通过附加属性修改