一、简介
在WPF 中,最常见属性就是依赖属性,支持数据绑定的属性都是依赖属性,像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.可以配合样式使用
标签:依赖,Button,绑定,IsRed,WPF,CustomButton,属性 From: https://www.cnblogs.com/just-like/p/17419239.html