当前位置:  开发笔记 > 前端 > 正文

什么是依赖属性?

如何解决《什么是依赖属性?》经验,为你挑选了3个好方法。

什么是.Net中的依赖属性(特别是在WPF上下文中).常规财产有什么区别?



1> Matt Hamilto..:

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

关于它们最好的事情是它们内置了数据绑定的所有管道.如果你将它们绑定到它们,它们会在它们发生变化时通知它.


这仍然告诉我很少关于依赖属性可以做什么,或者为什么它存在.你没有提到它们最有价值的属性,元素树的价值分辨率.
@BKSpurgeon DependencyObject有一些方法,如"SetValue"和"GetValue",您可以调用它们来保存/读取依赖项属性的值,而不是使用支持字段.

2> Jonathan Per..:

我发现唯一有用且写得很好的解释是:http://www.wpftutorial.net/dependencyproperties.html

基本上,DependencyProperties与常规属性的不同之处在于它们不仅仅是类中字段的setter/getter,而是在运行时动态检索它们的实际值.SetValue()DP 的方法非常简单,并将属性的本地值设置为您给出的值.但是,当您尝试GetValue()从DependencyProperty中时,它将首先查找本地值,如果不存在(这在DependencyProperties中不同于常规属性),它将继续向上逻辑UI树,直到找到这样的值.如果框架已到达树的顶部而未找到任何本地值,则它将使用预定义的默认值作为属性的值.

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

并且,如上所述,DependencyProperties还允许我们在XAML代码中绑定它们并在它们上设置触发器,这些触发器不允许使用常规属性.

我希望我已经设法清除了一些模糊性:)


附加属性是一个属性,它不属于正在声明的当前项,但会影响另一个对象.例如:`Button`上的`Grid.Row ="1"`将它设置在父`Grid`的第2行(由于行是从零开始的事实),但是`Row` DependencyProperty属于`Grid`对象.
什么是“附加财产”?
当你说'DependencyProperties还允许我们在XAML代码中绑定它们并在它们上设置触发器时,不允许在常规属性上使用它',你是说在XAML中绑定和设置触发器或仅设置触发器是不允许的.感谢您的跟进并帮助让事情变得更加清晰!

3> Ash M..:

http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/在WF和WPF的上下文中提供了依赖属性的良好解释.

摘录:

关键点 - 依赖属性的价值得到了解决

与任何属性一样,依赖属性的最终目标是管理状态.但与普通的.Net属性不同,本地属性值不存储在实例变量中.

相反,依赖项属性在依赖项属性框架中注册,并且底层属性值已解析 - 这意味着该值由依赖项属性框架根据属性注册定义的规则确定.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有