I have datagrid which has row validation with Virtualization on. I imprted large file with 48 column and 500 rows. It does validation for each visible rows (Virtualization) at the beginning. So if 10 rows are visible to user (it has scroll bar), it validates only 10 rows when data is imported, which is fine.
My Issue is: when I update any cell of datagrid, it does row validation again for 10 rows. I want data grid to validation only that updated row, not all visible rows. My current validation causes performance issue because of that.
Here Is Xaml:
<wpfc4:RhinoDataGrid.RowValidationRules>
<wpfc4:CourseValidationRule ValidationStep="RawProposedValue"/>
</wpfc4:RhinoDataGrid.RowValidationRules>
And Code is:
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;
}
}