Ceci est un problème assez complexe qui m'a vraiment confus en ce moment. Toute aide serait grandement appréciée.Comment faire pour déclencher un événement ComboBox SelectionChanged à partir d'un ListBoxItem imbriqué?
Le programme d'installation:
ListBox de type A UserControls
-> ListBoxItem de type A UserControl
-> ListBox de type B UserControls
---> ListBoxItem de type B UserControl
---- > ListBox de type C UserControls
-----> ListBoxItem de type C UserControl (contient la liste déroulante)
En d'autres termes, le type a commande comporte une zone de liste de contrôles de type B qui a une zone de liste de type C contrôles. Tous les contrôles sont de nature hiérarchique. Le type A contient les données nécessaires pour charger les contrôles de type B et le type B contient les données nécessaires au chargement des contrôles de type C. Le contrôle de type C possède un contrôle ComboBox standard pour modifier les valeurs des éléments présents. En plus de la structure ci-dessus, j'ai drag and drop lié à l'événement PreviewMouseLeftButtonDown sur les deux niveaux UserControl Type A et Type B pour gérer les commandes réordonner/suppression/etc dans l'interface graphique. Tout cela fonctionne comme prévu.
Le problème:
Lorsque je tente de changer la valeur dans la zone de liste déroulante, le « niveau » événement SelectionChanged ne se déclenche sur le type C, à moins que je suis assez prudent de cliquer sur les frontières/espacement entre tout type A ou B contrôles. Cela se produit lorsque mon menu contextuel ComboBox chevauche un contrôle de type A ou B situé sous lui-même. Les événements de sélection pour Type A ou B sont déclenchés à la place des événements de Type C, de sorte que le ComboBox ne modifie jamais sa valeur de manière fiable. Dans le débogueur, le code pour gérer le glisser-déposer est déclencher sur le ListBoxItem suivant situé sous le ComboBox.
Pensées:
Est-il possible que je peux faire ma prévalence de prendre popup ComboBox sur les éléments derrière tout en double nichée dans un ListBox (c.-à ignorer tout derrière pendant qu'il est ouvert)?
Existe-t-il un moyen de rediriger les événements SelectionChanged qui déclenchent incorrectement vers le ComboBox qui est censé les déclencher?