Answers:
依赖项属性是从DependencyObject派生的类的属性,它们的特殊之处在于,它们不仅仅使用后备字段来存储其值,而是在DependencyObject上使用一些辅助方法。
关于它们的最好的事情是它们内置了所有用于数据绑定的管道。如果您将某些内容绑定到它们,则它们将在更改时通知它。
我发现唯一有用且写得很好的解释是: http //www.wpftutorial.net/dependencyproperties.html
基本上,DependencyProperties与常规属性的不同之处在于它们不仅是类中字段的设置器/获取器,而且它们在运行时会动态地检索其实际值。SetValue()
DP 的方法非常简单,将属性的本地值设置为您赋予它的值。但是,当您尝试GetValue()
从DependencyProperty获取时,它将首先查找一个本地值,如果不存在任何本地值(与常规属性不同,该值在DependencyProperties中是可行的),它将继续在逻辑UI树中继续查找直到找到该值。如果框架到达树的顶部而没有找到任何本地值,则它将使用预定义的默认值作为属性的值。
与常规属性相比,此方法允许DependencyProperties消耗更少的内存,因为仅将用户明确设置的值存储在本地。
而且,如上所述,DependencyProperties还允许我们在XAML代码中绑定到它们,并在它们上设置触发器,这在常规属性上是不允许的。
我希望我已经解决了一些模糊的问题:)
Grid.Row="1"
在Button
上将其设置为在父对象的第2行中Grid
(由于行从零开始),但是Row
DependencyProperty属于该Grid
对象。
DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
,是否表示不允许同时绑定XAML和设置触发器,也不能仅设置触发器。感谢您的跟进,并帮助您使事情变得更清楚!
Value
值为0 的属性(非DP),并且希望视图Value
更改为1 时可以执行某些操作。您可以使用DataTrigger
并设置Binding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/很好地解释了WF和WPF中的依赖项属性。
摘录:
关键点–依赖属性的值已解析
像任何属性一样,依赖属性的最终目标是管理状态。但是与普通的.Net属性不同,本地属性值不存储在实例变量中。
而是,将依赖项属性注册到依赖项属性框架,并解析基础属性值-这意味着该值由依赖项属性框架基于属性注册定义的规则确定。