WPF“保存”按钮,其状态尽快发生变化

时间:2013-10-03 12:16:42

标签: wpf

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

在客户的属性上,我有验证(在setter模式中使用INotifyDataErrorInfo和异常)。 对于两个数据网格的某些列,我都有相同的内容。

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

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

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

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

  • 附加到字段的事件?
  • to multidatatriggers xaml part?
  • 代码背后的代码?

我是否可以访问链接到数据网格(具有单元格验证模板)的“全局验证指标”。

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

1 个答案:

答案 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)); }
}