WPF依赖属性 增加的属性像普通属性一样使用

对于WPF了解的不多,特别是新添加一个控件时对里面的元素操作时就比较麻烦。

比如:对于一个TextBlock控件text属性修改的时候,就比较麻烦。

一般的方法是把控件实例完以后再引用TextBlock控件给其赋值,这种方法虽说可以解决问题,但是觉得不是很好,与winform处理的方式相似,既然wpf比winform新,那么winform这种繁琐的问题,必然会被wpf较为简洁的方法替代。

我自己对于WPF的依赖属性是属于知识匮乏的级别,但是通过其他人写的代码,照葫芦画瓢竟然能解决问题,瞬间让我膨胀起来,必须记下这个使用方法,一来加强记忆,便于以后更深入的研究。二来,分享原本就是一件快乐的事,能帮助到人,那是更快乐的事。

声明一个 public static readonly的DependencyProperty类型变量,留一个问题为什么要是 public static readonly类型???

        public static readonly DependencyProperty RecipeUnitNameProperty = DependencyProperty.Register(
            RecipeUnitPropertyName,
            typeof(String),
            typeof(uc_recipeStatus),
            new UIPropertyMetadata("",new PropertyChangedCallback(RecipeUnitNamePropertyChanged))
            );

一般都会在变量名后面加上Property以此后缀作为其他人区别普通属性的规范。

在静态构造函数中向属性系统注册依赖属性,并获取对象引用。依赖属性是通过调用DependencyProperty.Register静态方法创建,该方法需要传递一个属性 名称,这个名称非常重要,在定义控件Style和Template的时候,Setter的Property属性填入的值就是注册依赖属性时使用的名称。propertyType指明了依赖属性实际的类型,ownerType指明了是哪个类注册了此依赖属性,最后typeMetadata存放了一些依赖属 性的元信息,包括依赖属性使用的默认值,还有属性值发生变更时的通知函数(抄)

完成了一个依赖属性的注册,那么我们怎样才能对这个依赖属性进行读写呢?当然是提供一个依赖属性的实例化包装属性,通过这个属性来实现具体的读写操作。和CLR属性不同,依赖属性不是直接对私有变量的操纵,而是通过GetValue()和SetValue()方法来操作属性值的,可以使用标准的.NET属性定义语法进行封装,使依赖属性可以像标准属性那样来使用(抄)
 

        public String RecipeUnitName
        {
            get
            {
                return (String)GetValue(RecipeUnitNameProperty);
            }
            set
            {
                SetValue(RecipeUnitNameProperty, value);
            }
        }

使用的时候就像使用其他属性一样赋值就可以啦,终于水完一篇了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值