2011-10-22 85 views
1

SelectedItem.DT抛出错误时未调用Validation_Error? DT是来自SQL查询的DataTable,如果TSQL失败,我想显示SQL错误。我想我可以建立一个DataTable并将ex.msg放在表中。但我宁愿调用Validation_Error。DataGrid Validation.Error Not Called

<DataGrid Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True" 
       ItemsSource="{Binding ElementName=cbReports, Path=SelectedItem.DT, ValidatesOnExceptions=True, NotifyOnValidationError=True, NotifyOnSourceUpdated=True}" 
       Validation.Error="Validataion_Error" /> 

此文本框(在另一页上)在set中引发错误时会调用Validation_Error。

<TextBox Text="{Binding Path=DF.FieldValue, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}" 
      Validation.Error="Validataion_Error"/> 

回答

0

DataTable没有实现IDataErrorInfo那么它不会自动为你做任何验证错误。我总是将DataTable转换为实现IDataErrorInfo的我的类的ObservableCollection

public class MyClass : IDataErrorInfo 
{ 
    //.. 
} 

// Use ObservableCollection instead of DataTable 
ObservableCollection<MyClass> MyDataGridItemsSource { get; set; } 

我想,在你的DF.FieldValue你的文本框绑定的工作原理是DF的原因是实现IDataErrorInfo

+0

谢谢,我该如何将DataTable转换为ObservableCollection? – Paparazzi

+0

我建议你使用AutoMapper(http://automapper.org/),否则你需要自己创建方法和复制数据。 – Ekk