c# - WPF 监视属性更改
问题描述
我经常有以下任务:
我有一个对象集合(fe 客户),并希望为用户提供这些对象的编辑器。通常我在编辑器的左侧有一些列表控件,在右侧有一个表单。表单在左侧显示当前选择的对象的属性。
关于任何更改的确认,至少有两种策略:
- 使编辑器成为模态对话框窗口并为其提供确定/取消按钮。确定后保存所有对象的所有更改
- 在右侧表单上方或下方为编辑器提供一个保存按钮,允许用户确认对当前选定对象的更改。
我的问题是关于第二种策略,作为一个带有 WPF 的 MVVM 应用程序实现:
我想向我的用户反馈有未保存的更改。诸如文本编辑器之类的应用程序通常通过在发生任何更改时启用“保存”按钮并在用户按下它以确认她/他的更改后再次禁用它来解决此问题。
如果我理解正确,我将不得不监视表单中任何绑定属性的更改(由模型类支持)。通常我的模型类使用自动属性(没有明确的 getter 和 setter)。我是否必须为我的所有属性编写显式获取器以在任何更改时启用“保存”按钮,或者是否有更聪明的方法来实现这一点?
解决方案
遵循 MVVM 模式,您的 ViewModel 应该实现INotifyPropertyChanged
接口,这样您就可以轻松订阅PropertyChanged
事件并监控属性更改