2010-08-10 2 views
3

J'ai lu this bon article sur les événements routés, et j'ai compris pourquoi nous avons parfois besoin d'événements bulle et parfois nous avons besoin d'événements tunnel. Ce que je n'ai pas compris, c'est que lorsque l'on utilise le tunnel Event, pourquoi après le traitement ou l'atteinte de l'élément source, l'événement bubble est-il encore lancé?Comprendre les événements de routage: Pourquoi ai-je besoin des deux événements, bulle et tunnel?

Merci d'avance!

Répondre

4

L'article indique que si vous placez une image sur un bouton, et que l'image est cliquée, l'événement de tunnel pour cette image se déclenchera. Mais il est très probable que vous souhaitiez également gérer ce clic comme si le bouton lui-même avait été cliqué, donc un événement bulle est également déclenché qui se répercute jusqu'à l'événement click sur le bouton lui-même (parce que le bouton possède l'image). que vous pouvez traiter l'image cliquez comme un clic sur un bouton, en utilisant le gestionnaire d'événements habituel pour le bouton.

2

Je voudrais également ajouter que l'événement pour les deux (Tunnel et Bubble) sont différents. Pour le tunnel, nous utilisons PreviewXXX (par exemple: PreviewMouseDown) et pour l'événement bulle, nous utilisons l'événement XXX (par exemple: MouseDown).

Par séquence, l'événement Tunnel est déclenché en premier à partir de la racine de l'application et se termine à la source. Et l'événement Bubble est déclenché.

Il est parfaitement logique d'avoir ces deux événements.

Questions connexes