web-dev-qa-db-fra.com

Ombre portée WPF

Actuellement, je fais quelque chose dans WPF qui a une bordure qui contient une grille et d'autres contrôles. Le problème auquel je suis confronté est que chaque fois que je définis la propriété Border.Effect sur un effet d'ombre portée, chaque contrôle contenu dans la bordure a maintenant une ombre portée. Existe-t-il un moyen de définir l'ombre uniquement sur la bordure et non sur tous les contrôles contenus dans la bordure?

Voici un petit exemple de mon code:

<Grid>
 <Border Margin="68,67,60,67" BorderBrush="Black" BorderThickness="1" CornerRadius="10">
  <Border.Effect>
   <DropShadowEffect/>
  </Border.Effect>
  <Rectangle Fill="White" Stroke="Black" Margin="37,89,118,98" />
 </Border>
</Grid>
31
Petezah

Deux choix:

Option 1: Ajoutez un élément de bordure avec l'effet sur lui en tant que frère de l'arborescence d'éléments de bordure/rectangle que vous avez. Quelque chose comme ça:

<Grid>
    <Border Margin="68,67,60,67"
            BorderBrush="Black"
            BorderThickness="1"
            CornerRadius="10">
        <Border.Effect>
            <DropShadowEffect />
        </Border.Effect>
    </Border>
    <Border Margin="68,67,60,67"
            BorderBrush="Black"
            BorderThickness="1"
            CornerRadius="10">

        <Rectangle Fill="White"
                   Stroke="Black"
                   Margin="37,89,118,98">
        </Rectangle>
    </Border>

</Grid>

Option 2: mettez le rectangle en tant que frère de l'élément de bordure comme ceci:

   <Grid>
    <Border Margin="68,67,60,67"
            BorderBrush="Black"
            BorderThickness="1"
            CornerRadius="10">
        <Border.Effect>
            <DropShadowEffect />
        </Border.Effect>
    </Border>
    <Rectangle Fill="White"
               Stroke="Black"
               Margin="37,89,118,98">
    </Rectangle>

</Grid>

REMARQUE: vous devrez modifier la disposition de la deuxième solution pour aligner le rectangle là où vous le souhaitez

43
Brad Cunningham