首页 > 其他分享 >WPF 依赖属性

WPF 依赖属性

时间:2023-05-21 21:44:08浏览次数:44  
标签:依赖 Button 绑定 IsRed WPF CustomButton 属性

一、简介

  在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

相关文章

  • IDEA——Java的一些依赖
    <!--导入knife4j的maven坐标(Swagger框架)--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</ve......
  • Gradle依赖的统一管理
    昨天的文章「AlphaGo真的赢了么?」新关注我的人可能有点诧异,心想「我来关注技术的,你给我推送个段子啥子意思?」,这里顺便我来解释下,我认为学习技术或者分享技术并不一定都是非常严肃、枯燥乏味的,我在给你们分享技术的同时希望穿插着别的东西,比如段子,比如生活中遇到的事,比如我自己以及......
  • C#学习笔记 -- 类的属性
    属性属性代表类实例或类中数据项的成员,使用属性就像写入或读取一个字段,语法相同,从语法上无法区分他们(0)属性的特征是命名的类成员有类型可以被赋值和读取与字段不同,属性是一个函数成员不一定为数据存储分配内存执行代码属性是两个匹配的、命名的......
  • spring 循环依赖
    属性注入、set方法注入spring内部会解决。解决方式:假设A创建时,发现依赖B对象后,会先创建依赖的B对象。此时A对象还是个半成品。创建B时发现依赖A,会直接把半成品的B赋值给A。等B对象创建完,再回到A的创建流程里,把B对象赋值给A。核心就是把依赖的对象先实例化出来一个半成品,......
  • CDK——零依赖容器渗透工具包
     https://github.com/cdk-team/CDK/wiki/CDK-Home-CN概述CDK是一个开源的容器渗透工具包,旨在在不依赖任何操作系统的情况下在不同的精简容器中提供稳定的利用。它带有有用的网络工具和许多强大的PoCs/EXPs,可以帮助你轻松地逃离容器并接管K8s集群。快速开始运行cdkeva以......
  • 使用JSTL 通过taglib标签引入所需的标签库 uri属性没有提示
     首先找到这两个支持jar包 然后添加到项目的web下面的WEB-INF-->lib(没有的话自己建)下接着 鼠标在项目上右键Addaslibrary,下拉列表选择projectlibrary或者Module Library都可以。  ......
  • 用Wpf做一个画笔画板(续5-Diagram画板)
    先上效果图吧同样老规矩,先上源码地址:https://gitee.com/akwkevin/aistudio.-wpf.-diagram本次实现的内容有[1]画笔实现[2]封闭画笔实现[3]钢笔实现[4]文字画笔[5]直线,矩形,椭圆[6]Path形状[7]取色器[8]三种画笔可选画笔示例入口  示例截图 核心代......
  • WPF.Basic.数据绑定
    WPF常用五种数据绑定方式 绑定方式一(绑定元素依赖属性)<StackPanel><SliderName="s1"Value="10"Maximum="100"></Slider><TextBlockFontSize="{BindingElementName=s1,Path=Value}"Text="看着我">......
  • WPF.Basic.依赖属性
    1依赖属性定义  在WPF界面的数据绑定中,为了能够使绑定源数据和绑定目标在变更后能够通知对方,.net在原来的属性之上设计了依赖属性    所以支持绑定的属性本质上它都是封装后的依赖属性。那么也就是说,只有依赖属性才可以进行绑定。  1依赖属性使用publiccl......
  • Vue进阶(九十七):对象动态添加属性和值
    (文章目录)一、背景Vue规定不允许直接修改props或者data属性,必须使用Vue.set方法。Vue.set方法用来修改对象属性。如果要增加属性所属对象是响应式的,该方法可以确保属性被创建后也是响应式的,同时触发视图更新。二、基础知识注:修改的对象必须为响应式对象,且操作响应式对象的属......