Удалить ошибку проверки после отклонения изменений в DataGrid - PullRequest
0 голосов
/ 20 января 2012

У меня есть DataGrid, который привязан к напечатанному DataTable, например:

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

Этот DataGrid также имеет RowValidationRule.Все работает хорошо, кроме одного случая: когда в строке возникает ошибка, и я нажимаю кнопку отмены (MyTypedDataTable.RejectChanges());ошибка проверки все еще существует, и данные в этой строке все те же.В случаях, когда ошибок нет, RejectChanges() работает нормально.

Как я могу устранить ошибку проверки?Заранее спасибо за предложения.

1 Ответ

0 голосов
/ 20 января 2012

Я использую это, и это работает в моих проектах.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...