2010-05-14 108 views
23

目前我正在做一些WPF中有一个包含网格和其他控件的边框。我面临的问题是,无论何时将Border.Effect属性设置为投影效果,每个包含在边框中的控件现在都有阴影。有没有办法将阴影设置为边框而不是边框​​中包含的每个控件?WPF投影

这里是我的代码很短的例子:

<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> 

回答

34

两个选择:

选项1:使用效果上添加边框元素作为边界/矩形元素树的兄弟你有。事情是这样的:

<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> 

方案2:将矩形的边框元素的像这样的兄弟姐妹:

<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> 

注意:您将需要调整的第二个解决方案的布局,使矩形排列在你想要的位置

+2

因为你已经在网格面板内添加了一些其他内容(而不是矩形),请设置网格面板的背景属性以避免整个内容得到阴影。例如, ...... ... ' – Suriya 2014-03-13 07:28:32