2

こんにちは、私の問題を見つけるのを手伝ってください:

私は2つのデータグリッドで作業しています。そのうちの1つはデータテーブルにバインドされ、もう1つはデータリレーションを持つ子行にバインドされています。私の問題は、行にエラーがあるかどうかを確認するだけで日付を検証しようとするときです。

<DataGrid x:Name="myDataGrid2" ItemsSource="{Binding ElementName=myDataGrid1, Path=SelectedItem.myDataRelation}">
     <DataGrid.RowValidationRules>
         <validation:ValidationRules ValidationStep="UpdatedValue"/>
     </DataGrid.RowValidationRules>
</DataGrid>

そして、私の ValidationRules は次のように定義されています。

public class ValidationRules : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        BindingGroup group = (BindingGroup)value;
        StringBuilder error = null;
        foreach (var item in group.Items)
        {
            DataRowView rowView = item as DataRowView;
            if (rowView != null)
            {
                if (!string.IsNullOrEmpty(rowView.Row.RowError))
                {
                    if (error == null)
                        error = new StringBuilder();
                    error.Append((error.Length != 0 ? ", " : "") + rowView.Row.RowError);
                }
            }
        }
        if (error != null)
            return new ValidationResult(false, error.ToString());
        return ValidationResult.ValidResult;
    }
}

myDataGrid1 の項目を選択して myDataGrid2 の行を編集すると、これがエラーになり、別の項目を選択して項目に戻ると、myDataGrid2 に従って myDataGrid1 にエラーが発生します。

"DeferRefresh is not allowed during an addNew or EditItem transaction.: 
 An unhandled exception ocurred, and the application is terminating". 

誰も私が何をすべきか知っていますか??

4

0 に答える 0