什么是依赖属性?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

.NET中的依赖项属性是什么(特别是在WPF上下文中)。与普通财产有什么区别?

提问于
用户回答回答于

依赖项属性是从DependencyObject派生的类的属性,它们的特殊之处在于,它们不是简单地使用支持字段来存储它们的值,而是在DependencyObject上使用了一些助手方法。

它们最美好的地方在于它们内置了所有的数据绑定管道。如果你把什么东西绑定到他们身上,他们会在他们改变的时候通知他们。

用户回答回答于

基本上,DependencyProperties不同于常规属性,因为它们不仅是类中字段的setter/getter,而且在运行时动态地检索它们的实际值。大SetValue()DPS方法非常简单,并将属性的本地值设置为给定的值。但是,当你试图GetValue()在DependencyProperty中,它将首先查找一个本地值,如果没有一个本地值(与常规属性不同,在DependencyProperties中是可行的),它将继续在逻辑UI树上运行,直到找到这样的值为止。如果框架已经到达树的顶端,而没有找到任何本地值,那么它将使用预定义的默认值作为属性值。

此方法允许DependencyProperties比常规属性消耗更少的内存,因为只有用户显式设置的值才会在本地存储。

而且,如上所述,DependencyProperties还允许我们在XAML代码中绑定到它们,并在它们上设置触发器,这在常规属性上是不允许的。

扫码关注云+社区