非静态依赖项属性

Mat*_*ský 4 wpf

我有没有理由(或者应该)不将依赖属性声明为非静态?

我需要创建一个具有双向可绑定属性的接口.INotifyPropertyChanged在接收端看起来有点麻烦,因为它依赖于字符串标识符.

Ree*_*sey 11

我有没有理由(或者应该)不将依赖属性声明为非静态?

是.

WPF中的依赖项属性机制使用每种类型指定的存储机制,而不是每个实例.DP的设计依赖于静态定义,而不是每个实例.如果在实例上定义它们,它们将无法正常工作.

这部分是为了允许继承属性,但也允许您在对象上指定很多属性,而不需要为每个实例使用大量内存.

如果要创建具有双向可绑定属性的接口,通常需要为类使用INotifyPropertyChanged,并在用户界面元素上使用依赖项属性来处理绑定.INotifyPropertyChanged是适当的机制.如果主要投诉是字符串标识符,您可以使用表达式树解决它们.

  • @commanderz:是的,虽然通常情况下,UI元素上有DP,而"模型"对象上有INPC,它们应该是UI的DataContext.您可以将两者放在同一个对象上,但这通常不是一个好主意,因为最好将您的关注点分开. (2认同)
  • @commanderz:尝试将应用程序逻辑(实现INPC)与UI(使用DP)分开 (2认同)