在拒绝DataGrid上的更改后删除验证错误

本文关键字:删除 验证 错误 拒绝 DataGrid | 更新日期: 2023-09-27 18:20:57

我有一个DataGrid,它绑定到一个类型化的DataTable,如下所示:

<DataGrid ItemsSource="{Binding Path=MyTypedDataTable}" ... />

该CCD_ 3还具有CCD_。在一种情况下,一切正常:当一行中出现错误时,我按下撤消按钮(MyTypedDataTable.RejectChanges());验证错误仍然存在,并且该行中的数据仍然相同。在没有错误的情况下,RejectChanges()工作正常。

如何使验证错误消失?提前感谢您的建议。

在拒绝DataGrid上的更改后删除验证错误

我使用它,它在我的项目中有效。

public class RowDataValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        BindingGroup group = (BindingGroup)value;
        foreach (var item in group.Items)
        {
            DataRowView rowView = item as DataRowView;
            DataRow row;
            if (rowView != null)
                row = rowView.Row;
            else
                row = item as DataRow;
            if (row != null && row.HasErrors)
            {
                var errorColumns = row.GetColumnsInError();
                StringBuilder sb = new StringBuilder();
                foreach (var column in errorColumns)
                {
                    sb.AppendLine(row.GetColumnError(column));
                }
                return new ValidationResult(false, sb.ToString());
            }
        }
        return ValidationResult.ValidResult;
    }
}

xaml

<DataGrid ItemsSource="{Binding Path=MyListItems, Mode=OneWay, ValidatesOnDataErrors=true, ValidatesOnExceptions=true}">
            <DataGrid.RowValidationRules>
                <Base:RowDataValidationRule />
            </DataGrid.RowValidationRules>
</DataGrid>