Kyl*_*ndo 65
这有助于我理解这个推理:
主要区别在于,正常.NET属性的值是直接从类中的私有成员读取的,而DependencyProperty的值是在调用从DependencyObject继承的GetValue()方法时动态解析的.
设置依赖项属性的值时,它不会存储在对象的字段中,而是存储在基类DependencyObject提供的键和值的字典中.条目的键是属性的名称,值是您要设置的值.
依赖属性的优点如下:
减少内存占用
当您认为UI控件的90%以上的属性通常保持其初始值时,为每个属性存储字段是一个巨大的耗散.依赖项属性仅通过在实例中存储已修改的属性来解决这些问题.默认值在依赖项属性中存储一次.
价值继承
访问依赖项属性时,将使用值解析策略解析该值.如果未设置本地值,则依赖项属性将向上导航逻辑树,直到找到值.当您在根元素上设置FontSize时,它将应用于下面的所有文本块,除非您覆盖该值.
更改通知
依赖项属性具有内置的更改通知机制.通过在属性元数据中注册回调,您可以在更改属性的值时收到通知.这也被数据绑定使用.
来自:WPF教程.