加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

WPF属性(一)依赖属性

发布时间:2020-12-13 20:14:19 所属栏目:百科 来源:网络整理
导读:依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得值的属性,拥有依赖属性的对象称为依赖对象,在传统开发中,一个对象所占用的内存在调用new操作符进行实例化的时候就已经决定了,而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键,可以修改依赖属性的各个参数。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读