2009-01-25 7 views
5

J'ai une toile avec des commandes utilisateur disposées dessus. Lorsqu'une info-bulle est affectée à la commande usercontrol ou à l'un de ses enfants, cette info-bulle n'apparaît pas (l'événement open ne se déclenche pas non plus). Je ne les désactive pas explicitement.L'info-bulle wpf ne s'affiche pas sur usercontrol ou ses enfants

J'ai placé beaucoup d'infobulles ailleurs dans l'application et elles s'affichent toutes, à l'exception de celles que j'ai créées.

Des idées?

Hiérarchie est à peu près comme suit:

<Grid> 
<Canvas> 
    <UserControl> 
    <Canvas> 
    <Line/> 
    <Rectangle/> 
    </Canvas> 
    </UserControl> 
</Canvas 
</Grid> 

Répondre

2

J'ai finalement compris. Sur ma toile, 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 de coup était effectué, il frappait ces lignes et arrêt. En définissant IsHitTestVisible sur false sur toutes les géométries non pertinentes, mon info-bulle s'affiche désormais correctement. La raison pour laquelle je voyais l'événement d'entrée/sortie de la souris était parce que lorsque je déplaçais le curseur, les lignes faisaient glisser une image derrière et permettaient donc à la souris d'entrer/sortir mais de ne pas bouger.

Cela résout mon problème.

4

Si l'arrière-plan de la Usercontrol est x: Null, alors les événements de souris atterriront dans le contenu sous-jacent. Vous pouvez utiliser "Transparent" pour s'assurer que les événements de la souris vont à usercontrol.

Ce comportement n'est pas unique à usercontrols; c'est le comportement général pour tout WPF. Dans votre exemple, en supposant que vous ayez un remplissage sur les éléments enfants, vous devriez pouvoir survoler ceux-ci et voir les info-bulles que vous avez définies.

0

J'ai eu ce problème à l'origine lorsque j'ai testé dans mon canevas racine, mon rectangle ne montrait pas d'info-bulle lorsque l'arrière-plan était nul. Toutefois, cela ne résout pas le problème pour le contrôle utilisateur. J'ai essayé un fond transparent à la fois pour le contrôle de l'utilisateur et la toile à l'intérieur, le rectangle à l'intérieur de cette toile intérieure a un fond noir et pourtant, pas de chance: l'info-bulle ne s'ouvre pas. J'ai essayé de placer une info-bulle sur mon canevas racine et elle apparaît effectivement mais pas sur mes contrôles utilisateur enfant individuels ni sur leurs canevas/enfants internes, même s'ils ont un arrière-plan/ensemble de remplissage. Par ailleurs, si vous placez un événement MouseEnter, cela signifie qu'il se déclenche lorsque la souris pénètre dans le canevas interne, mais que l'info-bulle ne s'affiche pas.

Questions connexes