我试图弄清我最后一个问题的本质,并为描述带来一些更清晰的内容。WPF验证和CanExecute命令
鉴于WPF表单提交两个文本框和一个“保存”按钮的新数据。这两个文本字段都是必填字段,并绑定到ViewModel属性。按钮通过Execute和CanExecute方法绑定到“Execute”中继命令。 CanExecute返回!ViewModel的HasErrors。 ViewModel实现INotifyPropertyChanged和INotifyDataErrorInfo接口。属性设置器仅对此属性运行验证。
的目标是:
- 最初禁用 “保存” 按钮。
- 只有在两个文本字段都经过验证而未对每个属性更改的整个ViewModel进行验证的情况下,才启用“保存”按钮。
对于第一个目标,我使用isValidated布尔属性,它最初是假的,一旦发生第一次验证就会变为真。然后在CanExecute方法中使用HasErros检查此属性。有没有更优雅的方式?
我不知道如何实现第二个目标。对此有何想法?
THX
你正在使用什么'ICommand'实现?你有'RaiseCanExecuteChanged()'方法或类似的方法吗?每次相关属性更改时都要打电话。 – Gusdor
我只执行了Execute和CanExecute方法。 RaiseCanExecuteChanged()的实现如何帮助? – toppless
我所做的是CanExecuteChanged事件的实现。 公共事件EventHandler CanExecuteChanged { add {CommandManager.RequerySuggested + = value; } remove {CommandManager.RequerySuggested - = value; } } – toppless