WPF附加属性

摘要:
此时的成绩和部门就是附加属性。最常用的是使用指定的属性名称属性类型和属性所有者的类型来注册附加属性。例如下面代码中的Human类中原先没有Grade这么一个属性,使用School类中的附加属性,则可以使School中的人具有Grade这个属性。

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类

classSchool:DependencyObject

{

public static intGetGrade(DependencyObject obj)

{

return (int)obj.GetValue(GradeProperty);

}

public static void SetGrade(DependencyObject obj, intvalue)

{

obj.SetValue(GradeProperty, value);

}

public static readonly DependencyProperty GradeProperty =DependencyProperty.RegisterAttached("Grade", typeof(int), typeof(School), new UIPropertyMetadata(0));

}

Human类

classHuman:DependencyObject

{

}

附加属性的使用

private void Button_Click(objectsender, RoutedEventArgs e)

{

Human human = newHuman();

School.SetGrade(human, 6);

int grade =School.GetGrade(human);

MessageBox.Show(grade.ToString());

}

4.4) 当然附加属性也可以使用Binding依赖在其他数据对象上。

注:附加属性是不同的对象使用者赋予对象的属性。这些属性可以动态加载与卸载。

说明:本文从<work hard work smart>修改而来。在文中作者添加了部分操作过程相关的内容。

免责声明:文章转载自《WPF附加属性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇A component required a bean of type 'com.example...' that could not be found解决办法驱动下通过进程PID获得进程名 (动态获取ImageFileName在EPROCESS结构体中的相对偏移)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF界面设计—撸大师

WPF界面设计,模仿了金山卫士,360,鲁大师的界面! <!--无边框窗体--> <Style x:Key="NoResize_window" TargetType="{x:Type Window}"> <Setter Property="AllowsTransparency" Value=...

WPF自定义窗口(Windows Server 2012 Style)

先上图 新建CustomControl,名:HeaderedWindow ThemesGeneric.aml文件夹下加入 笔刷,转换器 1 <SolidColorBrush x:Key="ActiveBackground" Color="#FF66CBEA"/> 2 <SolidColorBrush x:Key="De...

WPF 事件快速参考

为了提供快速参考,下面列出了 Expression Blend 中的可用事件。可用的事件可能会随着用户在“交互”面板的“对象和时间线”下选定不同的对象而有所变化。例如,如果在“对象和时间线”下选定“LayoutRoot”对象,则无法创建“Activated”事件处理程序方法,因为该事件仅对“Window”对象有效。 事件 描述 Annotatio...

wpf treeview 数据绑定 递归绑定节点

1.先上效果 将所有节点加入ComboBox数据源,在ComboBox中选择时下方Treeview显示该节点下的子节点。 1.xaml文件,将以下代码加入界面合适位置 1     <StackPanel> 2 <StackPanel Margin="10"> 3 <La...

WPF/Silverlight HierarchicalDataTemplate 模版的使用

上一篇 对Wpf/Silverlight Template 进行了总结,本篇继续上一篇,主要是介绍 HierarchicalDataTemplate 的使用方法。HierarchicalDataTemplate 继承于DataTemplate,被称之为"层级式数据模板",主要是应用层级比较明显数据集合,其典型的应用就是对TreeView控件进行数据绑定,接...

WPF简介:VS创建桌面应用程序

1、简介 1/ 什么是WPF WPF,Windows Presentation Foundation也,译过来就是“Windows呈现基础”,你看它的目的非常明确,就是用来把数据“显示”给用户看的(说白了就是用来做UI的)。如果只是给用户显示几串文本、两三张图片或者几个表格那WPF就太糗了,幸乎,WPF可不是这等素食动物——大家都见过Flash动画吧,WP...