0
我有DataGrid,它具有虚拟化上的行验证。我用48列和500行给大文件。它在开始时为每个可见行(虚拟化)进行验证。所以如果用户可以看到10行(它有滚动条),那么当数据导入时它只验证10行,这很好。WPF DataGrid RowValidation问题
我的问题是:当我更新datagrid的任何单元格时,它会再次为10行进行行验证。我想要数据网格只验证更新的行,而不是所有可见的行。我目前的验证会因此导致性能问题。
这里是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 2013-03-26 14:47:14