2010-04-29 8 views
1

J'ai une petite application Silverlight 4 qui consiste essentiellement en une grille contenant une étiquette et une zone de liste déroulante. Lorsque je clique sur l'étiquette, je la remplace par une deuxième zone de texte afin que je puisse éditer l'étiquette (comme vous pouvez modifier le nom d'un contrôle Silverlight dans VS2010).Capture Silverlight 4 événement lorsque le panneau a cliqué

J'ai un gestionnaire d'événements LostFocus dans la zone de texte qui finira l'édition lorsque le contrôle perd le focus (restauration de l'étiquette mise à jour). Le problème est que les utilisateurs ont tendance à cliquer sur le panneau quand ils ont fini d'éditer plutôt que sur un autre contrôle (ou en appuyant sur Entrée, qui est également supporté).

J'ai essayé d'ajouter un gestionnaire d'événement vers le bas de la souris gauche au panneau. Cependant, cela se déclenche uniquement lorsque la zone de texte n'a pas le focus (je suppose que la zone de texte a capturé la souris?)

Existe-t-il une approche pour reconnaître qu'un contrôle sans entrée a été cliqué qui me permettrait de terminer l'édition mode?

Répondre

2

Vous pouvez vous abonner à l'événement MouseLeftButtonDown Grid mis en déroute en utilisant le code suivant:

panel.AddHandler(UIElement.MouseLeftButtonDownEvent, 
    new MouseButtonEventHandler(panel_OnMouseLeftButtonDown), true); 

Contrairement à des événements communs des événements mis en déroute sont barboter du contrôle le plus intérieur à son parent, puis à un grand-parent, etc. De la même façon, vous pouvez souscrire au parent du panel pour intercepter les clics à l'extérieur de votre panel.

Questions connexes