WPF 依赖属性
一、简介
在WPF 中,最常见属性就是依赖属性,依赖属性是一种特殊的属性,它可以被多个元素共享,并且可以自动处理属性值的变化通知、继承、样式和模板等。依赖属性的值可以从多个来源获取,包括本地值、样式、模板、继承值和动画等。依赖属性的定义需要使用DependencyProperty类来完成。
支持数据绑定的属性都是依赖属性,像Button的Content就是一个依赖属性DependencyProperty。依赖属性没有值,可以依赖绑定源来获取值
换句话说,只有依赖属性支持数据绑定,当我们需要一些特殊的属性而该控件没有时,就可以为其添加一个依赖属性
依赖属性还可以提供:
- 独立验证。
- 默认值。
- 回调,用于监视对其他属性的更改。
- 可以根据运行时信息强制转换属性值的系统。
二、依赖属性的声明
依赖属性需要继承所依赖的控件类,添加自己所需要的属性。假设我们要在Button中增加一个属性,设置Button是否为红色。新建类CustomButton,并继承于Button。
在vs中,支持代码片段propdp,在编辑器中输入propdp并按下两次Tab,就可以快速创建一个依赖属性,并修改名字为数据类型为bool,并修该名字为IsRed。
public class CustomButton : Button { public bool IsRed { get { return (bool)GetValue(IsRedProperty); } set { SetValue(IsRedProperty, value); } } public static readonly DependencyProperty IsRedProperty = DependencyProperty.Register("IsRed", typeof(bool), typeof(CustomButton), new PropertyMetadata(false)); }
三、使用
在资源中设置样式,我们可以发现CustomButton中多了一个属性IsRed,可以被我们设置,也可以将其绑定到数据模型上,主要用于扩展控制的功能,可提供更多个性化的服务
xmal
<Window.Resources> <Style TargetType="local:CustomButton"> <Style.Triggers> <Trigger Property="IsRed" Value="True"> <Setter Property="Background" Value="Red" /> </Trigger> </Style.Triggers> </Style> </Window.Resources>
<GroupBox> <DockPanel> <local:CustomButton IsRed="True" Content="依赖属性" Width="100" Height="20"/> </DockPanel> </GroupBox> ackPanel>
四、总结
1.依赖属性需要继承所依赖的控件类,添加自己所需要的属性,支持绑定
2.使用代码片段propdp可快速创建
3.可以配合样式使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律