0

我有一个 wpf 架构问题。在我的 xaml 表单上,我有一个主要对象(客户)、两个数据网格(客户信息)。

在客户的属性上,我进行了验证(使用 INotifyDataErrorInfo 和设置器模式中的异常)。对于两个数据网格的某些列,我有相同的。

我希望在字段上的所有单独验证都正常时启用下面的保存按钮,并且当另一个补充规则正常时(“客户应该有一个地址”)。

我试图在多数据触发条件下找到自己的方式,但感觉自己搞砸了。

我希望任何更改(字段验证变为 OK 或 NOK,当字段失去焦点时)立即更改保存按钮状态,而无需花费太多处理时间(我觉得我不需要重新运行所有验证规则,只需检查 HasError 指标)。

我应该如何组织相关代码:

  • 附加到字段的事件?
  • 到multidatatriggers xaml 部分?
  • 代码背后的一部分?

我可以访问链接到数据网格(具有单元格验证模板)的“全局验证指示器”吗?

感谢您帮助我更清楚地获得积分。

4

1 回答 1

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)); }
}
于 2013-10-03T13:03:43.067 回答