我有一个 WPF 应用程序使用 INotifyPropertyChanged 来指示属性更新。我喜欢它的一点是,它使您能够在不调用所有 setter 代码的情况下发出属性更改信号。当您有两个相互更新的链接字段,或者当您有代码在每个 setter 上保存更改并且您不想多次触发保存,这实际上是用户的一次更改时,这很方便。
然而,这种方法的明显弱点是,属性名称中的错误或您向其发送通知的 View 模型中的错误会使您陷入困境,并且只会在运行时显示。
我查看了依赖属性,但找不到任何可以让您进行“软更新”的东西:让 UI 知道该属性已更改,但避免调用当 UI 导致更改时通常会运行的所有代码 View 模型。
有什么方法可以获得允许软更新并在编译时捕获通知问题的属性系统?
最佳答案
如果根本问题是属性名称错误,则有编译时解决方案,例如将“属性名称”参数设为表达式树而不是字符串。
http://michaelsync.net/2009/04/09/silverlightwpf-implementing-propertychanged-with-expression-tree
Caliburn.Micro库还在其 PropertyChangedBase 类中包含此方法。
关于c# - "Soft updating"依赖属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159408/