3


1

Effet d’ombre portée superposée

Je sais que ce que je veux faire est probablement facile et évident, mais je ne peux pas le résoudre. J’ai une grille avec deux rangées, la rangée supérieure a un élément de bordure qui remplit la rangée (hauteur fixe de 30). La deuxième ligne (hauteur fixe de 100) contient actuellement un DockPanel vide avec un fond blanc (il contiendra ContentControl pour les contrôles dynamiques).

J’ai ajouté un effet d’ombre portée à la bordure dans la première ligne, avec une direction de 270 pour déposer l’ombre sous la bordure. Il est à peine visible ce qui n’est pas une surprise car il n’y a pas assez d’espace pour accueillir l’ombre. Ce que je veux, c’est que l’ombre déborde de la ligne et chevauche le DockPanel dans la ligne ci-dessous.

J’ai en quelque sorte réalisé cela en ayant également la grille contenant un fond blanc, puis en ajoutant une marge inférieure à l’élément de bordure pour accueillir l’ombre. Bien que cela semble OK, ce n’est pas vraiment ce que j’essaie d’atteindre.

Toutes mes excuses pour aucun exemple de code, j’ai dû quitter le travail mais cela me dérange toujours.

Merci d’avance.

Paul

2 Answer


5


Placez le DockPanel avant la bordure de sorte que la bordure soit plus haute dans l’ordre z

Cela marche


mais ici, le panneau d’ancrage chevauche et masque l’ombre portée



4


Puisque Grid est un Panel, il hérite de la propriété jointe Panel.ZIndex. Il est possible d’utiliser cette propriété pour définir littéralement l’indice Z, plutôt que de le déduire de l’ordre XAML comme le fait Phil dans son exemple.

L’exemple non fonctionnel peut être corrigé avec une paire de propriétés attachées:


L’une ou l’autre approche fait la même chose, mais Panel.ZIndex peut être utile pour formater des problèmes ou modifier le Z-index par programme.