0

仮想化をオンにして行を検証するデータグリッドがあります。私は48列と500行の大きなファイルを作成しました。最初に、表示されている各行の検証(仮想化)を行います。したがって、10行がユーザーに表示されている場合(スクロールバーがあります)、データのインポート時に10行のみが検証されます。これは問題ありません。

私の問題は、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;
    }
}
4

1 に答える 1

0

ValidationStep使用してみてUpdatedValueくださいRawProposedValue

<wpfc4:RhinoDataGrid.RowValidationRules>
    <wpfc4:CourseValidationRule  ValidationStep="UpdatedValue"/>
</wpfc4:RhinoDataGrid.RowValidationRules>
于 2013-03-26T13:23:46.273 に答える