我有一个wpf架构问题。在我的xaml表单上,我有一个主要对象(客户),两个datagrids(客户信息)。
在客户的属性上,我有验证(在setter模式中使用INotifyDataErrorInfo和异常)。 对于两个数据网格的某些列,我都有相同的内容。
我希望在字段上的所有单独验证都正常时启用下面的“保存”按钮,并且当另一个补充规则正常时(“客户应该有一个地址”)。
我试图通过多数据触发条件找到自己的方式,但感觉我在搞乱。
我想要任何更改(字段验证变为OK或NOK,当字段失去焦点时)立即更改保存按钮状态,而不需要花费太多处理时间(我觉得我不需要重新运行所有验证规则,只需检查HasError指标。)
我应该如何组织相关代码:
我是否可以访问链接到数据网格(具有单元格验证模板)的“全局验证指标”。
感谢您帮助我更清楚地获得积分。
答案 0 :(得分:1)
使用HasErrors
接口实现的INotifyDataErrorInfo
属性可以很容易地实现这一点。假设您使用某种Command
进行保存功能,可以将此属性检查添加到CanExecute
处理程序中:
private bool CanSave(object parameter)
{
return !((Customer)parameter).HasErrors;
}
...
public ICommand Save
{
get { return new RelayCommand(action => SaveCustomer(), canExecute =>
CanSave(SelectedClient)); }
}