46

每当我将Border.Effect属性设置为投影效果时,控件中包含的每个控件都有一个投影。

有没有办法将阴影设置到边框而不是边框​​中包含的每个控件?

这是我的代码的一个简短示例:

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

2 回答 2

60

两种选择:

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

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

于 2010-05-14T00:30:21.867 回答
0

我意识到您的问题有答案,但似乎没有最简单的答案。您的问题的最简单答案是您只需为设置阴影的控件的背景着色。像这样:

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

结果:

NoShadowFallThrough

于 2021-12-01T16:17:53.567 回答