2017-08-15 3 views
-1

Actuellement, j'ai une vue arborescente qui ressemble à ceci:.NET TreeViewItem Sélectionné seulement quand lui-même est sélectionné, pas son enfant?

+Country 
    +StateA 
    -CityA 
    -CityB 
    +StateB 
    -CityC 
    +State 
    -CityD 

Lorsque les villes sont les feuilles d'extrémité de l'arbre et peuvent être sélectionnées et ont leur propre gestionnaire Selected. Le pays est également sélectionnable et possède son propre gestionnaire Selected.

Les gestionnaires sont attribués comme si:

countryTreeItem.Selected += countrySelectedHandler; 
... 
cityTreeItem.Selected += citySelectedHandler; 

Lorsque je sélectionne une ville, l'État mère et le Pays-mère sont également sélectionnés. Cela signifie que les deux citySelectedHandler et countrySelectedHandler sont sélectionnés lorsque je sélectionne une feuille (Say, City A)

est-il un moyen de faire en sorte que seul l'élément de feuille sélectionné se? Si je clique sur CityA je veux seulement citySelectedHandler pour que cette ville fonctionne, au lieu de countrySelectedHandler de son ancêtre pour courir aussi.

Cependant, je veux toujours que countrySelectedHandler s'exécute lorsque le pays est sélectionné (cliqué sur). Il ne suffit pas de supprimer le gestionnaire pour l'ancêtre.

Merci!

Répondre

0

Pour arrêter la propagation de l'événement, vous pouvez définir e.Handled = true. De cette façon, l'événement ne sera pas propulsé jusqu'aux éléments de l'arbre ancêtre.