2011-10-22 4 views
1

Lorsque SelectedItem.DT génère une erreur Validation_Error n'est pas appelée? DT est un DataTable d'une requête SQL et je veux afficher l'erreur SQL si le TSQL échoue. Je suppose que je pourrais construire un DataTable et mettre le ex.msg dans la table. Mais je préfère appeler Validation_Error.DataGrid Validation.Error non appelée

<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" /> 

Cette zone de texte (sur une autre page) n'appelle VALIDATION_ERROR quand une erreur est renvoyée dans le jeu.

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

Répondre

0

DataTable est pas mis en œuvre IDataErrorInfo alors il ne faire aucune erreur de validation automatiquement pour vous. Je transforme toujours DataTable en ObservableCollection de ma classe qui implémente IDataErrorInfo.

public class MyClass : IDataErrorInfo 
{ 
    //.. 
} 

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

Je suppose que la raison pour laquelle votre association fonctionne TextBox est DF dans votre DF.FieldValue est mise en œuvre IDataErrorInfo.

+0

Merci, comment puis-je transformer un DataTable en une ObservableCollection? – Paparazzi

+0

Je vous suggère d'utiliser AutoMapper (http://automapper.org/), sinon vous devez créer une méthode et copier des données par vous-même. – Ekk

Questions connexes