2009-01-28 4 views
2

J'utilise un DataTemplate qui anime un RenderTransform pour augmenter sa taille lorsque la souris le survole. Le problème que j'ai est que lorsque l'animation est en vigueur, l'élément de liste déroulante agrandie apparaît derrière d'autres éléments. Existe-t-il un moyen de contrôler le ZIndex de l'élément de zone de liste à partir de mon DataTemplate afin qu'il soit toujours au-dessus des autres éléments?Utilisation de RenderTransform pour augmenter la taille d'un DataTemplate dans WPF

+0

Je pourrais recréer le bogue dans certains cas. Cela s'est produit si j'ai défini une couleur d'arrière-plan de la seule et unique étiquette que j'avais dans le gabarit de données. Ne pas définir l'arrière-plan et il n'y avait pas de problème. – John

Répondre

0

Vous pouvez définir l'index ZI de l'élément modélisé à partir du modèle à l'aide de déclencheurs. Découvrez le contrôle parent par VisualTree basé sur un modèle comme l'analyse syntaxique ci-dessous

{RelativeSource FindAncestor, AncestorType = ...

0

Le zIndex est uniquement disponible sur les éléments hébergés dans une toile. Par conséquent, vous pouvez peut-être envelopper le contrôle Listbox entier dans un canevas, puis définir Canvas.zIndex à 99 dans le cadre du déclencheur que vous utilisez pour effectuer la transformation. Cependant, je ne pouvais pas faire fonctionner ça.

La seule autre option qui a fonctionné est d'utiliser un LayoutTransform plutôt qu'un RenderTransform car cela déplacera les autres éléments à mesure que la transformation est calculée avant que les éléments soient placés. Cela signifierait qu'il ne serait pas nécessaire de définir un zIndex, mais cela dépendrait de vos besoins.

Questions connexes