2011-10-22 62 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