wpf - 为什么依赖属性?

标签 wpf silverlight dependency-properties

为什么微软要走制作依赖属性和依赖对象的路线,而不是使用反射或者属性?

最佳答案

这帮助我理解了推理:

主要区别在于,普通 .NET 属性的值是从类中的私有(private)成员直接读取的,而 DependencyProperty 的值是<调用从 DependencyObject 继承的 GetValue() 方法时动态解析。

当您设置依赖项属性的值时,它不会存储在对象的字段中,而是存储在基类 DependencyObject 提供的键和值的字典中。条目的键是属性的名称,值是您要设置的值。

依赖属性的优点如下:

减少内存占用

当您认为 UI 控件 90% 以上的属性通常保持其初始值时,为每个属性存储一个字段是一个巨大的浪费。依赖属性通过仅在实例中存储修改的属性来解决这些问题。默认值在依赖属性中存储一次。

值继承

当您访问依赖项属性时,将使用值解析策略来解析该值。如果未设置本地值,依赖属性将在逻辑树中向上导航,直到找到值。当您在根元素上设置 FontSize 时,它​​会应用于下面的所有文本 block ,除非您覆盖该值。

更改通知

依赖属性具有内置的更改通知机制。通过在属性元数据中注册回调,当属性值发生更改时,您会收到通知。数据绑定(bind)也使用它。

来自:WPF Tutorials .

关于wpf - 为什么依赖属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1723756/

相关文章:

wpf - 如何在 Windows 8 Metro 应用程序中播放 Youtube 或实时流协议(protocol)视频?

silverlight - 开始 Silverlight 4 设计

c# - .net、mono 和 silverlight 的图形库

c# - 为什么我的数据绑定(bind)看到的是真实值而不是强制值?

wpf - WPF 中的依赖属性使用

c# - 代码隐藏中的 WPF C# 按钮单击事件

wpf - 如何将自定义数据与 CollectionViewGroup 关联?

c# - WPF 用户控件预配置

c# - 使用两个日期选择器控件来指定开始和结束日期?

c# - 从 Silverlight 重定向到另一个页面