2016-06-17 2 views
2

J'utilise un contrôle WPF ComboBox standard. Lorsque la fenêtre contextuelle est ouverte et que l'utilisateur clique quelque part à l'extérieur, la fenêtre contextuelle est fermée. Mais s'il y a un bouton sur la fenêtre et que l'utilisateur clique dessus (avec la fenêtre contextuelle encore ouverte), le gestionnaire de clic du bouton n'est pas exécuté. Popup est fermé, mais l'utilisateur doit cliquer une fois de plus sur le bouton pour déclencher l'événement de clic sur celui-ci.WPF ComboBox: cliquez en dehors du popup supprimer le clic de souris

Je sais que c'est un comportement standard pour ce contrôle. Avez-vous des idées pour contourner ce comportement? Merci!

+0

Avec moi ce n'est pas le cas. L'événement de clic sur les boutons est déclenché après la fermeture de Popup. – AnjumSKhan

+0

Vous utilisez WPF? Commandes standard? Quelle est votre version de framework .net? –

Répondre

1

Vous pouvez créer un événement pour ComboBox DropDownClosed et avec la fonction hittest, trouvez l'autre contrôle sur lequel l'utilisateur a cliqué. Ensuite, dans la fonction FilterCallback après avoir trouvé ce contrôle, déclenchez l'événement de souris vers le bas sur ce contrôle dans la fonction FilterCallback.

J'ai trouvé l'événement raise, ne fonctionne pas sur les comboboxes donc pour cliquer dessus, j'ai simplement mis le IsDropDownOpen à true.

J'ai trouvé le code dans here et je l'ai modifié un peu.

0

Vous pouvez essayer de libérer la capture de la souris juste après la zone de liste déroulante obtient un: Dans votre ses propriétés ComboBox en XAML:

GotMouseCapture="ComboBox_OnGotMouseCapture" 

Et dans le code-behind:

private void ComboBox_OnGotMouseCapture(object sender, MouseEventArgs e) 
{ 
    ComboBox.ReleaseMouseCapture(); 
}