附加属性是WPF中定义在某类但可被任意DependencyObject设置的静态依赖属性,用于解决跨类布局控制等问题;需用RegisterAttached注册并提供Get/Set静态访问器,典型如Grid.Row、Canvas.Left。
WPF 中的附加属性(Attached Property)本质是静态依赖属性,专为“被其他类借用并设置”而设计,最典型的应用就是布局系统中 Grid.Row、Canvas.Left 这类属性——它们定义在 Grid 或 Canvas 类里,却能被任意 UIElement 设置。
普通依赖属性只能由定义它的类或其子类使用。但布局容器需要控制子元素的位置、大小等行为,又不能要求每个子元素都继承自某个特定基类。附加属性就解决了这个“跨类赋值”的问题:它让容器类提供一套“可挂载”的属性,子元素无需修改自身代码就能响应布局逻辑。
必须用 DependencyProperty.RegisterAttached 注册,并配套提供 GetXXX 和 SetXXX 两个静态访问器(命名需严格遵循约定)。例如定义一个 ToolTipService.ToolTip 风格的自定义附加属性:
// C# 定义(通常放在一个静态类中)
public static class MyPanel
{
public static readonly DependencyProperty AttachedValueProperty =
DependencyProperty.RegisterAttached(
"AttachedValue",
typeof(int),
typeof(MyPanel),
new PropertyMetadata(0));
public static int GetAttachedValue(DependencyObject obj) =>
(int)obj.GetValue(AttachedValueProperty);
public static void SetAttachedValue(DependencyObject obj, int value) =>
obj.SetValue(AttachedValueProperty, value);
}
Grid.Row、DockPanel.Dock,容器在 Measure/Arrange 阶段读取子元素的这些值来决定排布DragBehavior.IsEnabled 这样的附加属性开关行为Style.Setter 或 ControlTemplate 中设置附加属性,实现统一行为注入ownerType 必须是定义该附加属性的类(如 MyPanel),不是使用它的类GetXXX/SetXXX 方法必须是 public static,且参数类型和返回值要匹配属性类型DependencyObject 实例上,由 WPF 依赖属性系统统一管理PropertyMetadata 中传入回调函数(PropertyChangedCallback),但注意回调中拿到的是 DependencyObject,需转成具体类型再操作基本上就这些。附加属性不是语法糖,而是 WPF 布局、样式、行为解耦的核心机制之一,理解它等于摸清了 WPF “容器驱动子元素”这一设计哲学的关键关节。
# 回调函数
# c#
# 为什么
# canva
# Static
# 子类
# int
# void
# 继承
# class
# public
# Property
# 访问器
# 对象
# typeof
# canvas
# wpf
# 可在
# 回调
# 的是
# 这一
# 放在
# 就能
# 这类
# 自定义
# 又不
相关文章:
内网网站制作软件,内网的网站如何发布到外网?
如何配置WinSCP新建站点的密钥验证步骤?
建站主机选购指南:核心配置优化与品牌推荐方案
网站制作员失业,怎样查看自己网站的注册者?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何用PHP快速搭建高效网站?分步指南
南京网站制作费用,南京远驱官方网站?
如何选择高效便捷的WAP商城建站系统?
建站之星代理商如何保障技术支持与售后服务?
如何在建站宝盒中设置产品搜索功能?
建站之星安装需要哪些步骤及注意事项?
如何批量查询域名的建站时间记录?
建站之星如何配置系统实现高效建站?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
建站之星后台密码遗忘?如何快速找回?
如何快速搭建高效服务器建站系统?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何选择可靠的免备案建站服务器?
XML的“混合内容”是什么 怎么用DTD或XSD定义
制作农业网站的软件,比较好的农业网站推荐一下?
网站企业制作流程,用什么语言做企业网站比较好?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何用y主机助手快速搭建网站?
如何在IIS中配置站点IP、端口及主机头?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何做网站制作流程,*游戏网站怎么搭建?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
湖北网站制作公司有哪些,湖北清能集团官网?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何在阿里云购买域名并搭建网站?
独立制作一个网站多少钱,建立网站需要花多少钱?
网页设计网站制作软件,microsoft office哪个可以创建网页?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何在Windows环境下新建FTP站点并设置权限?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
建站之星logo尺寸如何设置最合适?
如何基于云服务器快速搭建个人网站?
如何在云指建站中生成FTP站点?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
香港服务器租用每月最低只需15元?
网站制作难吗安全吗,做一个网站需要多久时间?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
建站之星×万网:智能建站系统+自助建站平台一键生成
高端云建站费用究竟需要多少预算?
建站之星云端配置指南:模板选择与SEO优化一键生成
如何彻底卸载建站之星软件?
*请认真填写需求信息,我们会在24小时内与您取得联系。