2017-08-04 1 views
-2

Je développe une application wpf, dans laquelle lorsque l'utilisateur effectue une action de sélection sur une combobox, l'événement de sélection est déclenché, mais dans le gestionnaire d'événements lorsque je mets à jour datagrid.itemsSource, erreur est utilisée pour utiliser un nouveau mot clé créer l'objet, à travers le point de rupture, j'ai vu que dans l'objet de gestionnaire d'événements DataGrid lui-même est null, mais ce n'est pas null dans la fonction MainWindow. pourquoi est-ce vrai?Impossible d'accéder à datagrid.itemsSource dans le gestionnaire d'événements combobox_selectionChanged?

private void majorkeys_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    {   
     minordata.ItemsSource = ReadLibrary.get_minor_records(majorkeys.SelectedValue.ToString(), minorkeys.SelectedValue.ToString()); 
    } 
+0

Ceci est probablement dû au fait que l'événement SelectionChanged est déclenché pendant InitializeComponent et que le champ 'minordata' n'a pas encore été défini. – Clemens

+0

vous avez bien compris! @Clemens – Sabeen

Répondre

0

Permettez-moi de répondre à ma propre question, le problème est que lorsque le composant est initialisé, les changements comboBox.selectedIndex et donc l'événement comboBox_selectionChanged est déclenché à ce moment-là n'est pas peuplée de mon DataGrid ItemsSource, d'où elle est nulle. J'ai résolu le problème en vérifiant si le itemSource du datagrid est null ou pas. Voici le code,

private void minorkeys_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (minordata != null) 
     { 
      minordata.ItemsSource = ReadLibrary.get_minor_records(majorkeys.SelectedValue.ToString(), minorkeys.SelectedValue.ToString()); 
     } 
    } 

yay! :)