2009-05-26 5 views
1

Lorsque vous cliquez sur le WPF ComboBox et que vous le sélectionnez, la seule interaction qui se produit après cela peut être avec la zone de liste déroulante. Si quelque chose d'autre est interagi avec, y compris les fonctions de fenêtre (minimize, restore, close, resize) et tout contrôle dans la fenêtre, l'action est ignorée et la ComboBox perd le focus.WPF Comportement de la souris lorsque ComboBox est mis au point

En outre, MouseEnter et MouseLeave sur les boutons de fenêtre sont toujours actifs, mais quand MouseEnter à la frontière de la fenêtre (?) Se produit, le pointeur de la souris ne change pas le pointeur de redimensionnement. Ce comportement est logique en raison de l'utilisation du contrôle contextuel par ComboBox. Le contrôle contextuel existe indépendamment de l'arborescence visuelle principale et, si la fenêtre se déplace ou est redimensionnée, la fenêtre contextuelle reste fixe au-dessus de la fenêtre principale.

J'ai essayé d'utiliser Reflector, pour voir ce que fait le ComboBox, mais je n'ai pas réussi à trouver ce que je cherchais. Fondamentalement, je ne sais pas si ce comportement vient de la fenêtre, le ComboBox, ou si cela a quelque chose à voir avec le popup. Comment puis-je résoudre ce problème?

Répondre

1

Vous avez raison dans votre description, la fenêtre contextuelle conserve toute l'action jusqu'à ce qu'elle se perde elle-même. Si vous essayez de changer la fonctionnalité de la ComboBox, vous pouvez regarder creating your own ControlTemplate qui se comporte différemment et ne conserve pas l'action par défaut du contrôle contextuel.

J'espère que cela aide, pas tout à fait sûr de ce que vous essayez de faire.

+0

Je n'essaie pas de changer la fonctionnalité de la zone de liste déroulante J'essaie de créer un contrôle entièrement différent qui est structuré comme le modèle de contrôle combobox, uniquement sans le bouton bascule. Si vous regardez le ComboBox, vous pouvez voir que pendant que le popup est ouvert, tout événement de souris semble passer. Il ignore même le survol de la bordure de la fenêtre où le pointeur de redimensionnement devrait normalement apparaître. Je sais qu'ils le font pour que le popup ne puisse pas rester ouvert quand la fenêtre change. J'essaie juste de comprendre comment accomplir un comportement similaire. – BrandonS

+0

Dans ce cas, je vais probablement abandonner l'idée de la liste déroulante de la ComboBox et juste créer un contrôle qui affiche le contenu lorsque basculé. Ensuite, vous pouvez le définir pour fermer le panneau de contenu lorsque le focus de la souris est perdu. Vous devez dupliquer la fonctionnalité de la ComboBox elle-même, mais vous ne pouvez probablement obtenir le comportement que vous souhaitez en faisant cela. –

Questions connexes