WPF的依赖属性
2016-03-25 17:37
148 查看
依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得数据(依赖在别人身上)的属性,用于依赖属性的对象称为依赖对象
节省实例对内存的开销
属性值可以绑定到其他对象身上
注意:必须使用依赖对象作为依赖属性的宿主,二者结合起来才能形成完整的Binding目标被数据的驱动,
自定义依赖对象类时,派生DependencyObject,,快捷方式propdp
public class StudentDependency:DependencyObject
{
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register("Name", typeof(string), typeof(StudentDependency));
}
解释Register参数
第一个指明那个属性作为包装器
第二个指明依赖属性存储什么类型的数据
第三个指明依赖属性的宿主是什么类型
第四个给依赖属性的DefaultMetdata(作用是向依赖属性的调用者提供一些信息一般用不到可以删除)赋值
原理性知识
DependencyProperty注册依赖属性时在也在全局HasTable中注册了键值对,其中Key是有CLR属性名的哈希值和宿主类型运算的到,而建立类对象DependencyProperty的实例时,每个DependencyProperty实例都有一个具有名为GlobalIndex的int类型的属性,GlobalIndex的值是通过一定的算法得到的具有唯一性,也是通过这个值建设到某个DependencyProperty实例的,被Static修饰的依赖属性其作用是为了检索真正的属性值而不是存储值,被用来检索键值的实际上是依赖属性的GlobalIndex,属性为了保证GlobalIndex属性值的稳定又使用Readonly
节省实例对内存的开销
属性值可以绑定到其他对象身上
注意:必须使用依赖对象作为依赖属性的宿主,二者结合起来才能形成完整的Binding目标被数据的驱动,
自定义依赖对象类时,派生DependencyObject,,快捷方式propdp
public class StudentDependency:DependencyObject
{
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register("Name", typeof(string), typeof(StudentDependency));
}
解释Register参数
第一个指明那个属性作为包装器
第二个指明依赖属性存储什么类型的数据
第三个指明依赖属性的宿主是什么类型
第四个给依赖属性的DefaultMetdata(作用是向依赖属性的调用者提供一些信息一般用不到可以删除)赋值
原理性知识
DependencyProperty注册依赖属性时在也在全局HasTable中注册了键值对,其中Key是有CLR属性名的哈希值和宿主类型运算的到,而建立类对象DependencyProperty的实例时,每个DependencyProperty实例都有一个具有名为GlobalIndex的int类型的属性,GlobalIndex的值是通过一定的算法得到的具有唯一性,也是通过这个值建设到某个DependencyProperty实例的,被Static修饰的依赖属性其作用是为了检索真正的属性值而不是存储值,被用来检索键值的实际上是依赖属性的GlobalIndex,属性为了保证GlobalIndex属性值的稳定又使用Readonly
相关文章推荐
- 第三方的工具以及插件
- JavaWeb项目开发案例精粹-第3章在线考试系统-005action层
- makefile,让编译更简单
- tomcat调优
- C++ 学习二
- 文档对象模型DOM通俗讲解
- 长度为n的整形数组,找出其中的任意n-1个数乘积最大的那一组
- Android四大基本组件介绍与生命周期
- ios9适配 添加URL Schemes白名单
- 支付宝Pay,一个类直接搞定
- java并发编程synchronized、volatile关键字及ReentrantLock类总结
- 带输入输出参数的存储过程
- kernel thread与进程描述符
- C++的杂项知识点~
- 迷宫寻宝(一)
- [Sdoi2013]直径
- 编译运行android emulator
- 快速排序原理剖析
- 面向对象思想的头脑风暴(二)—— 详解继承与组合的优缺点
- android自定义验证码倒计时View