什么是.Net中的依赖属性(尤其是在WPF上下文中)。与常规属性有什么不同?
发布于 2009-03-06 00:43:00
依赖属性是从DependencyObject派生的类的属性,它们的特殊之处在于,它们在DependencyObject上使用一些帮助器方法,而不是简单地使用支持字段来存储值。
它们最好的一点是,它们内置了数据绑定的所有管道。如果你给它们绑定了一些东西,当它们发生变化时,它们会通知你。
发布于 2012-10-17 00:02:59
我发现唯一有用且写得很好的解释是这样的:http://www.wpftutorial.net/dependencyproperties.html
基本上,DependencyProperties与常规属性的不同之处在于,它们不仅是类中字段的setter/getter,而且在运行时动态检索它们的实际值。DPs的SetValue()
方法非常简单,它将属性的本地值设置为您给它的值。但是,当您尝试从DependencyProperty执行GetValue()
时,它将首先查找本地值,如果不存在本地值(与常规属性不同,这在DependencyProperties中是可行的),它将继续沿着逻辑UI树向上,直到找到这样的值。如果框架已经到达树的顶部,但没有找到任何本地值,那么它将使用预定义的默认值作为属性的值。
此方法允许DependencyProperties比常规属性消耗更少的内存,因为只有由用户显式设置的值才会存储在本地。
如上所述,DependencyProperties还允许我们在XAML代码中绑定它们,并在它们上设置触发器,这在常规属性上是不允许的。
我希望我已经设法消除了一些含糊之处:)
https://stackoverflow.com/questions/617312
复制相似问题