为什么微软要走制作依赖属性和依赖对象的路线,而不是使用反射或者属性?
最佳答案
这帮助我理解了推理:
主要区别在于,普通 .NET 属性的值是从类中的私有(private)成员直接读取的,而 DependencyProperty 的值是<调用从 DependencyObject 继承的 GetValue() 方法时动态解析。
当您设置依赖项属性的值时,它不会存储在对象的字段中,而是存储在基类 DependencyObject 提供的键和值的字典中。条目的键是属性的名称,值是您要设置的值。
依赖属性的优点如下:
减少内存占用
当您认为 UI 控件 90% 以上的属性通常保持其初始值时,为每个属性存储一个字段是一个巨大的浪费。依赖属性通过仅在实例中存储修改的属性来解决这些问题。默认值在依赖属性中存储一次。
值继承
当您访问依赖项属性时,将使用值解析策略来解析该值。如果未设置本地值,依赖属性将在逻辑树中向上导航,直到找到值。当您在根元素上设置 FontSize 时,它会应用于下面的所有文本 block ,除非您覆盖该值。
更改通知
依赖属性具有内置的更改通知机制。通过在属性元数据中注册回调,当属性值发生更改时,您会收到通知。数据绑定(bind)也使用它。
来自:WPF Tutorials .
关于wpf - 为什么依赖属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1723756/