我有什么理由可以(或不应该)将依赖属性声明为非静态的?
我需要制作一个具有双向可绑定(bind)属性的接口(interface)。 INotifyPropertyChanged 在接收端似乎有点麻烦,因为它依赖于字符串标识符。
最佳答案
Is there any reason why I could (or should) not declare dependency properties as non-static?
是的。
WPF 中的依赖属性机制使用按类型而不是按实例指定的存储机制。 DPs 的设计依赖于它们是静态定义的,而不是每个实例。如果您在实例上定义它们,它们将无法正常工作。
这样做部分是为了允许继承属性,但也允许您在对象上指定很多属性,而无需为每个实例使用大量内存。
如果要创建具有双向可绑定(bind)属性的接口(interface),通常您希望为您的类使用 INotifyPropertyChanged,并使用用户界面元素上的依赖属性来处理绑定(bind)。 INotifyPropertyChanged 是正确的机制。如果主要提示是字符串标识符,您可以 work around them using expression trees .
关于wpf - 非静态依赖属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660696/