У меня есть datagrid, который имеет проверку строки с виртуализацией. Я набрал большой файл с 48 столбцами и 500 строками. Он выполняет валидацию для каждой видимой строки (виртуализация) в начале. Поэтому, если 10 строк видны пользователю (у него есть полоса прокрутки), он проверяет только 10 строк при импорте данных, что хорошо.WPF DataGrid RowValidation Issue
Моя проблема: когда я обновляю любую ячейку datagrid, она снова проверяет строку для 10 строк. Я хочу, чтобы сетка данных проверяла только обновленную строку, а не все видимые строки. Из-за этого моя текущая проверка вызывает проблемы с производительностью.
Here Is Xaml:
<wpfc4:RhinoDataGrid.RowValidationRules>
<wpfc4:CourseValidationRule ValidationStep="RawProposedValue"/>
</wpfc4:RhinoDataGrid.RowValidationRules>
И Кодекс:
public class CourseValidationRule : ValidationRule
{
public override ValidationResult Validate(object value,
System.Globalization.CultureInfo cultureInfo)
{
ValidationResult vResult = ValidationResult.ValidResult;
DataRowView drView = (value as BindingGroup).Items[0] as DataRowView;
RhinoDataGrid rGrid = VisualTreeHelpers.FindVisualChild<RhinoDataGrid>(Application.Current.MainWindow);
for (int i = 0; i < drView.Row.ItemArray.Count(); i++)
{
string strVal = drView.Row.ItemArray[i].ToString();
if (strVal.Length > 10)
{
vResult = new ValidationResult(false,
"error.");
break;
}
}
return vResult;
}
}
Я должен использовать RawProposedValue, потому что я тоже хочу для выполнения проверки при импорте данных. И только RawProposedValue делает проверку в то время. как только все будет сделано, а затем я изменил значение ячейки datagrid в то время, только эта строка должна быть обновлена. Но в моем случае он проверяет все видимые строки, даже я обновляю только строку 3. – user2203652