WPF属性(一)依赖属性
来源:互联网 发布:python 删除列表元素 编辑:程序博客网 时间:2024/05/22 06:38
依赖属性是一种可以自己没有值,并能通过使用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键,可以修改依赖属性的各个参数。
- WPF属性(一)依赖属性
- WPF中的属性(一)- CLR属性和依赖属性
- 一站式WPF--依赖属性(DependencyProperty)一
- 一站式WPF--依赖属性(DependencyProperty)一
- 一站式WPF--依赖属性(DependencyProperty)一
- WPF系列(一)依赖项属性
- WPF之依赖属性
- WPF依赖属性
- wpf 依赖项属性
- WPF(依赖属性)
- WPF依赖属性
- WPF依赖属性
- WPF 依赖属性 DependencyProperty
- wpf依赖项属性
- WPF 依赖属性使用
- WPF 依赖属性
- (WPF)依赖属性
- (WPF)依赖属性
- 在ie,fierfox浏览器中,div层飘在flash上面显示的问题
- 单片机驱动DS18B20
- 无任何网络提供程序接受指定的网络路径 解决办法
- JAVA中的反射机制详解
- 关于场的一种解释
- WPF属性(一)依赖属性
- VS 2008 OpenGL 配置详情
- sax、dom、pull解析xml
- Android 动画框架详解
- 感恩
- 内容长度超过单元格宽度自动截取变成...的CSS代码
- JIRA
- ABAP OO编程(一)
- nmon命令