2009-04-16 7 views
0

Un fait très bien connu est que les événements routés voyagent seulement vers le haut ou vers le bas de l'ascendance et non pas à travers tous les éléments. Mais un fait également connu est qu'un gestionnaire d'événements peut être câblé dans le parent commun de deux contrôles disparates.Événements routés dans wpf

Mes questions sont comment, quelques pointeurs s'il vous plaît.

J'ai XAML qui ressemble à

<Grid Name="MainGrid"> 
    <Listbox Name="lb1"/> 
    <Grid Name="InnerGrid"> 
     <Listbox Name="lb2"/> 
    </Grid> 
</Grid> 

Les gestionnaires d'événements de souris définis sur « LB1 » ne seront pas tiré comme il se « burried » sous « InnerGrid ». Ma question est comment puis-je écrire du code dans le "MainGrid" ou ailleurs dans lequel les gestionnaires d'événements définis sur "lb1" se faire virer. Ou peut-être une autre technique pour y parvenir.

Merci beaucoup.

+0

C'est peut-être une question stupide, mais pourquoi "enterrez"-t-il votre lb1 sous l'InnerGrid en premier lieu? ;) –

+0

Votre question est tout à fait logique. La question que j'ai posée ci-dessus est quelque chose comme couper court histoire courte. Fondamentalement à 1024X768 l'écran immobilier n'est pas trop accommodant et il y a beaucoup de contrôles dans cette forme. :) –

Répondre

1

Je ne sais pas exactement ce que vous demandez, mais il semble que vous vouliez pouvoir être appelé pour des événements déjà traités.

Essayez ceci:

Dans votre code derrière dans le constructeur après InitializeComponent(), appelez

this.AddHandler(RoutedEvent, Delegate, bool); 

Pass en cas (MouseDown ou etc), le délégué à appeler (quelque chose comme lb1_MouseDown), et puis true pour indiquer que vous souhaitez être appelé pour les événements déjà traités.

Questions connexes