2011-01-13 3 views
2

Dans mon projet Silverlight j'ai un menu, que je veux fermez-le si je clique partout en dehors de lui. J'ajoute gestionnaire à l'événement, cliquez sur App:Silverlight Handle App MouseLeftButtonDown?

AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu 

Mais le problème que: ne pénètre pas dans le gestionnaire lorsque je clique sur une autre commande, ou cliquez sur le même contrôle qui ont le contexte menu, il est entré seulement quand je clique sur une zone vide en dehors du menu.

Merci.

Répondre

1

Je ne savais pas qui était une signature de AddHandler qui ne prend que 2 paramètres, peut-être sa chose VB que vous obtenez avec elle et son défaut le troisième paramètre à False. Ce paramètre est le paramètre processedEventsToo qui indique que vous souhaitez que votre gestionnaire s'exécute même si un autre contrôle a géré l'événement.

Je suppose que le VB ressemblerait à ceci: -

AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu, True 

Modifier

Lets fossé ce code VB qui est faux de toute façon. Voici à quoi devrait ressembler le code en C# (vous devez être assez familier avec la traduction puisque la grande majorité des exemples de code sur le Web pour Silverlight sera en C#).

this.AddHandler(UIElement.MouseLeftButtonDownEvent, HideMenu, true); 

Si ce code est dans le code derrière du contenant UserControl et HideMenu a cette signature: -

void HideMenu(object sender, MouseEventArgs e) 
{ 
} 
+0

Comment puis-je utiliser le handledEventsToo votre code est invalide? – Saad

Questions connexes