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>
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top