【发布时间】:2011-06-22 16:12:38
【问题描述】:
我最近在学习silverlight,发现它很难理解依赖属性系统的本质。我可以在silverlight的依赖属性和javascript的对象属性之间做一个类比吗?它们都是由类似哈希表的数据结构实现的,并且可以在运行时添加/删除,对吗?
【问题讨论】:
标签: javascript wpf silverlight dependency-properties
我最近在学习silverlight,发现它很难理解依赖属性系统的本质。我可以在silverlight的依赖属性和javascript的对象属性之间做一个类比吗?它们都是由类似哈希表的数据结构实现的,并且可以在运行时添加/删除,对吗?
【问题讨论】:
标签: javascript wpf silverlight dependency-properties
你错了,WPF depdency properties 不是动态的,对象具有一组依赖属性,它们存储值的方式可能相同(我认为它更像是一个字典结构)但你不能只拥有一个新属性在飞行中。但是有一个叫做 attached properties 的东西允许附加属性。
我建议你阅读我链接的那些文章,它们应该很好地解释了一切。
【讨论】:
将 DependencyProperties 视为指针或地址。不是将属性设置为值,而是将其设置为指向另一个值的地址。
例如,不是说 TextBox 的文本等于 SomeValue,而是说它指向 ViewModel 中的字符串值。或者它指向某个对象的 Name 属性。或者指向一个指定的ComboBox 的SelectedText。当然,你总是可以说它直接指向一串“SomeValue”
<TextBox Text="{Binding SomeProperty}" />
<TextBox Text="{Binding SomeObject.SomeProperty}" />
<TextBox Text="{Binding ElementName=MyComboBox, Path=SelectedText}" />
<TextBox Text="SomeValue" />
基本上,它是一个依赖于其他值的属性。
【讨论】: