微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WPF属性(一)依赖属性

依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得值的属性,拥有依赖属性的对象称为依赖对象,在传统开发中,一个对象所占用的内存在调用new操作符进行实例化的时候就已经决定了,而WPF允许对象在被创建的时候并不包含用于存储数据的空间,只保留在需要用到数据时能够获得认值、借用其他对象数据或实时分配空间的能力,这种对象就是依赖对象,而这种实时获取数据的能力就是靠依赖属性来实现。

WPF中,依赖对象的类型是DependencyObject,依赖属性的类型是DependencyProperty,DependencyObject具有GetValue和SetValue两个方法

        public object GetValue(DependencyProperty dp)
        {

        }

        public void SetValue(DependencyProperty dp,object value)
        {

        }

WPF中所有的控件都是依赖对象,依赖属性必须以依赖对象为宿主,借助它的SetValue和GetValue方法进行写入与读取,因此,想使用自定义的依赖属性,宿主一定是依赖对象的派生类,依赖属性有public static readonly三个修饰符修饰,实例使用DependencyProperty.Register方法生成,例如:

public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name",typeof(string),typeof(Student));

依赖对象可以通过Binding依赖在其他对象上,即依赖对象是作为数据的目标而存在,所以需要为依赖对象的依赖属性添加了CLR属性包装,有了这个包装,就相当于为依赖对象准备了用于暴露数据的Binding Path
        public int MyProperty
        {
            get { return (int)GetValue(MyPropertyProperty); }
            set { SetValue(MyPropertyProperty,value); }
        }

还可以自定义一个SetBinding方法用于简化绑定操作
        public BindingExpressionBase SetBinding(DependencyProperty dp,BindingBase binding)
        {
            return BindingOperations.SetBinding(this,dp,binding);
        }
一个小技巧,需要申明一个依赖属性并使用CLR属性封装时,只需要输入propdp,vs就会给出一个提示,连按两次tab键,一个标准被依赖属性就申明好了,继续按tab键,可以修改依赖属性的各个参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐