2

您好,我希望您能帮我找到我的问题:

我正在使用两个数据网格,其中一个已绑定到数据表,另一个已绑定到具有数据关系的子行。我的问题是当我试图验证日期时,只是查看该行是否有错误。

<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 中编辑一行时,这是错误的,然后当我选择另一个项目然后返回到其中的项目时,myDataGrid1 中的项目根据 myDataGrid2 出现错误,应用程序会抛出我:

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

有人知道我应该怎么做吗??

4

0 回答 0