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.可以配合样式使用

 

posted @ 2023-05-21 21:35  just--like  阅读(71)  评论(0编辑  收藏  举报