WPF DropShadowEffect出现在预览中但不在运行时出现

use*_*237 10 wpf visual-studio

所以我在网格中实现了以下代码:

        <Grid.Effect>
        <DropShadowEffect ShadowDepth="0"
                      Color="Black"
                      Opacity="1"
                      BlurRadius="30" RenderingBias="Quality"/>
       </Grid.Effect>
Run Code Online (Sandbox Code Playgroud)

我可以看到预览中出现阴影; 然而,当我跑它时,没有阴影.所以我想知道我是否错过了什么.

XAML:

<Window x:Class="test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Background="Transparent" WindowStyle="None" AllowsTransparency="True">
<Grid>
    <Grid.Effect>
        <DropShadowEffect ShadowDepth="0"
                  Color="Black"
                  Opacity="1"
                  BlurRadius="30" RenderingBias="Quality"/>
    </Grid.Effect>

    <Rectangle Height="350" Width="525" Fill="White" Grid.ColumnSpan="2">
    </Rectangle>
</Grid>
Run Code Online (Sandbox Code Playgroud)

您应该看到一个窗口,边框周围有阴影.然后运行它,它消失了.

编辑:所以我所做的只是在矩形上添加一个边距,然后出现阴影.我假设窗口挡住了阴影.

Jos*_*eso 7

像这样在矩形中添加边距

<Rectangle Margin="10"  Height="350" Width="525" Fill="White" Grid.ColumnSpan="2">
Run Code Online (Sandbox Code Playgroud)

它需要边距的原因是因为投影效果绘制的轮廓大于矩形边界的轮廓.如果您不想使用矩形,只需将其应用于网格,则将边距添加到网格中.希望这可以帮助.