深入浅出-话属性

来源:互联网 发布:网络综合布线施工顺序 编辑:程序博客网 时间:2024/05/21 17:32
  • 研究什么样的对象才能作为Binding的Target以及Binding将把数据送往何处。

  • 程序的本质就是“数据+算法”,或者说用算法来处理数据以期得到输出结果

  • 静态字段在内存中只有一份拷贝,非静态字段则是每个实例拥有一个拷贝。方法无论是否为静态,在内存中只会有一份拷贝。
    -CLR属性(Common Language Runtime),该属性是对private字段的安全访问包装。也可以说是一个private字段在后台支持一个CLR属性。CLR属性不会增加内存的负担。

7.2依赖属性

依赖属性就是一种可以自己没有值,并能通过Binding从数据源获得值(依赖在别人身上)的属性,可以节省实例对内存的开销。拥有依赖属性的对象被称为“依赖对象”。

7.2.1依赖属性对内存的使用方式

  • 实例的每个CLR属性都包装着一个非静态的字段。TextBox有138个属性,每个属性包装着一个4字节的字段。试想创建了1000*10个TextBox,那么这些字段就会占用4*138*1000*10/1024大约5M的空间,而我们经常只用Text一个属性,这会浪费很多空间。
  • 怎么避免浪费?用得上就带着,用不着就不带,与必要的时候借别人的用。—WPF中依赖属性的原理。
  • 在传统.net开发中,一个对象所占用的内存空间在调用new操作符进行实例化的时候就已经决定了。在WPF中,允许对象在被创建的时候并不包含用于存储数据的空间,只保留在需要用到数据的时候能够获得的默认值、借用其他对象数据或实时分配空间的能力—这种对象叫依赖对象Dependency Object(具有GetValue和SetValue两个方法),这种实时获取数据的能力依靠依赖属性Dependency Property。
  • WPF开发中,必须使用依赖对象作为依赖属性的宿主,二者结合才能形成完整的Dependency Binding目标被数据所驱动。

7.3附加属性

  • 附加属性是一个属性本来不属于某个对象,但由于某种需求而后来被附加上。
    也就是把对象放入一个特定环境后对象才具有的属性(被环境赋予的属性)称为附加属性。
  • 附加属性的作用就是将属性和数据类型(宿主)解耦,让数据类型的设计更加灵活。
  • 附加属性的本质就是依赖属性,二者仅在注册和包装器上有一点区别。声明的时候使用 public static readonly 三个关键字共同修饰。注册附加属性使用的是RegisterAttached方法

  • -
0 0
原创粉丝点击