您好,我希望您能帮我找到我的问题:
我正在使用两个数据网格,其中一个已绑定到数据表,另一个已绑定到具有数据关系的子行。我的问题是当我试图验证日期时,只是查看该行是否有错误。
<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".
有人知道我应该怎么做吗??