前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 附加属性

C# 附加属性

作者头像
zls365
发布2021-09-02 15:43:26
1.2K0
发布2021-09-02 15:43:26
举报
文章被收录于专栏:CSharp编程大全CSharp编程大全

这节讲一下WPF中的附加属性。

【什么是附加属性】

附加属性我们早就使用过,常见的用于控件定位的Grid.Row,Grid.Column就是附加属性,那这个东西具体是什么意思呢?请设想这样的情景:一个学生,他在社团可以是社长,他在班内可以是班长,在赛场又可以是运动员,这些特定的属性,并不是每个学生都具有的,只有学生参与了或者在某个环境中,才具有这样的属性。那我们在定义学生类时,就不能把这些属性定义进去,为了解决这种在某些环境中才具有特定属性的情况,WPF引入了附加属性,附加属性就是一个对象可以被它外部的环境附加某些属性,而对象本身实际上不具有这样的属性。

【从代码中看附加属性】

附加属性实际上就是个依赖属性,大环境的依赖属性,依赖在其内部的对象上,反过来说就是内部属性被大环境附加上了一个属性,下面来看如何声明一个附加属性:

声明附加属性跟声明依赖属性大同小异,他同样遵循xxxProperty这样的命名规则,使用DependencyProperty.RegisterAttached方法获取一个实例,名称虽不同,但参数跟依赖属性的Register方法是一样的。

跟依赖属性包装器类似的,附加属性有一对Get,Set方法作为“包装器”,并且从参数上我们可以看到,附加属性只能附加到依赖对象上。

为此,我需要再声明一个类继承于DependencyObject:

这个类本身是个空的,下面看一下如何将GameClub的Name属性附加到Student上:

输出结果为:


至此,我们可以理解,为什么我们将Grid内部的控件赋上Row和Column值,它就可以将控件渲染到对应的格子中,是因为Grid读取到每个控件的附加属性值,从而知道要把控件放在哪。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【什么是附加属性】
  • 【从代码中看附加属性】
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档