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