zoukankan      html  css  js  c++  java
  • WPF的依赖属性

    依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得数据(依赖在别人身上)的属性,用于依赖属性的对象称为依赖对象

    1. 节省实例对内存的开销
    2. 属性值可以绑定到其他对象身上

    注意:必须使用依赖对象作为依赖属性的宿主,二者结合起来才能形成完整的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

  • 相关阅读:
    pku2992 Divisors
    pku3090 Visible Lattice Points
    pku3615 Cow Hurdles
    禁止 verifier.dll 监控程序
    运行ogreSDK的samples
    #pragma pack(n) 啥时候可以不再忘记?
    游戏开发流程图。
    希望可以尽快的写篇自己的成果。
    windows与OS X下的std::string
    VS2008鼠标右键不灵敏,TFS的Local Path无法打开对应文件夹
  • 原文地址:https://www.cnblogs.com/wangboke/p/5320356.html
Copyright © 2011-2022 走看看