2010-05-14 21 views
23

Actuellement, je crée 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 j'applique la propriété Border.Effect à un effet d'ombre portée, tous les contrôles contenus dans la bordure ont maintenant une ombre portée. Y at-il un moyen de définir l'ombre juste à la frontière et pas tous les contrôles contenus dans la frontière?WPF ombre portée

Voici un court 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> 

Répondre

34

Deux choix:

Option 1: Ajouter un élément de frontière avec l'effet sur elle en tant que frères et soeurs de l'arbre élément frontière/rectangle vous avoir. Quelque chose comme ceci:

<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: Mettre le rectangle en tant que frères et soeurs de l'élément de frontière comme celui-ci:

<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 mise en page sur la deuxième solution pour rendre la rectangle aligné où vous le souhaitez

+2

Si vous avez ajouté d'autres contenus (à la place du rectangle) à l'intérieur du panneau Grille, définissez la propriété Background du panneau Grid pour éviter que le contenu entier n'obtienne une ombre portée. Par exemple, « ...... .... ' – Suriya