infobulle wpf non affichée sur usercontrol ou ses enfants
Question
J'ai un canevas sur lequel sont disposés des contrôles utilisateur. Lorsqu'une info-bulle est attribuée à usercontrol ou à l'un de ses enfants, cette info-bulle ne s'affiche pas (l'événement open n'est pas déclenché non plus). Je ne désactive pas explicitement aucun d'entre eux.
J'ai placé de nombreuses info-bulles ailleurs dans l'application et elles sont toutes affichées, à l'exception de celles du contrôle utilisateur que j'ai créé.
Des idées?
La hiérarchie est approximativement la suivante:
<Grid>
<Canvas>
<UserControl>
<Canvas>
<Line/>
<Rectangle/>
</Canvas>
</UserControl>
</Canvas
</Grid>
La solution 2
Je l'ai finalement compris. Sur mon canevas, je dessinais des lignes de pointeur (horizontales et verticales pour montrer sur la grille où je suis et les valeurs sur la gauche / en bas), il s’avère que lorsque le test d’atteinte était en cours, il frappait ces lignes et s’arrêtait. . En définissant IsHitTestVisible sur false sur toutes les géométries non pertinentes, l'info-bulle s'affiche désormais correctement.
La raison pour laquelle je voyais l'événement entrer / quitter de la souris était que, lors du déplacement du curseur, les lignes glissaient d'un cadre derrière et permettaient ainsi à la souris d'entrer / de quitter mais de ne pas se déplacer.
Ceci résout mon problème.
Autres conseils
Si l'arrière-plan de Usercontrol est x: Null, les événements de la souris tomberont dans le contenu sous-jacent. Vous pouvez utiliser & Quot; Transparent & Quot; pour vous assurer que les événements de souris vont au contrôle utilisateur.
Ce comportement n'est pas propre à usercontrols; c'est le comportement général pour l'ensemble de WPF. Dans votre exemple, en supposant que vous remplissiez des éléments enfants, vous devriez pouvoir les survoler et voir les info-bulles que vous avez définies.
J'avais ce problème à l'origine lorsque j'ai testé dans mon canevas racine, mon rectangle ne montrait pas d'infobulle lorsque l'arrière-plan était nul. Toutefois, cela ne résout pas le problème du contrôle utilisateur. J'ai essayé d'utiliser un fond transparent pour le contrôle utilisateur et le canevas qu'il contient. Le rectangle à l'intérieur de ce canevas intérieur a un fond noir et pourtant, pas de chance: l'info-bulle ne s'ouvre tout simplement pas.
J'ai essayé de placer une info-bulle sur mon canevas racine. Elle s'affiche, mais pas sur mes contrôles utilisateur enfants individuels, ni sur leurs canevas / enfants internes, même s'ils ont un fond / un remplissage.
De plus, le fait de placer un événement MouseEnter montre qu'il se déclenche lorsque la souris entre dans le canevas intérieur, mais l'info-bulle ne s'affiche pas.