Pour gérer l'événement TreeView.SelectedItemChanged
, j'ai un comportement attaché qui se lie à une commande.InvalidCastException lorsque la sélection change dans un TreeView WPF
Habituellement, la propriété RoutedPropertyChangedEventArgs.NewValue
contient une référence à l'un de mes objets de modèle de vue, et je peux ensuite passer cela en tant qu'argument à ICommand.CanExecute
et ICommand.Execute
. J'utilise de here, mais j'ai un RelayCommand<T>
qui jette au type attendu.
Toutefois, dans certains scénarios, RoutedPropertyChangedEventArgs.NewValue
contient un TreeViewItem
, affiché sous la forme {System.Windows.Controls.TreeViewItem Header:{DisconnectedItem} Items.Count:0}
dans le débogueur.
Cela provoque mon RelayCommand<T>
à jeter un InvalidCastException
.
Question: quel est ce mystérieux TreeViewItem
et d'où vient-il?
Je suis conscient que je peux éviter l'exception en changeant RelayCommand<T>.Execute
de l'utilisation (T)value
à l'aide value as T
, mais j'aimerais savoir ce que la cause racine est.
OK. Une idée de pourquoi j'en vois une dans le gestionnaire d'événements SelectionChanged? –