我最近正在学习Silverlight,并发现很难理解依赖属性系统的本质。我可以在silverlight的依赖属性和javascript的对象属性之间进行类比吗?它们都是通过类似哈希表的数据结构实现的,可以在运行时添加/删除,对不对?
答案 0 :(得分:1)
你不对,WPF depdency properties不是动态的,对象有一组依赖属性,它们存储值的方式可能是相同的(我认为它更像是一个字典结构)但是你不能只有一个新的财产在飞行中。然而,有一种称为attached properties的东西允许附加属性。
我建议你阅读我链接的那些文章,他们应该很好地解释一切。
答案 1 :(得分:0)
将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" />
基本上,它是一个依赖于其他价值的属性。