如何在WPF中向无边界窗口添加阴影

时间:2020-09-02 11:52:07

标签: c# wpf xaml window

我有一个无边界且最大化的窗口。我想在此无边界窗口中添加阴影。我使用了几种方法,例如将Border添加到窗口中。它确实增加了阴影,但是当窗口最大化时,它只是使窗口变小并为其添加阴影。

我想拥有的是:

  • 最大化窗口时,阴影不可见
  • 将其最小化时,阴影是可见的

这是我使用的代码:

<Border Margin="10">
    <Border.Effect>
        <DropShadowEffect Color="Black"
                          Direction="270"
                          BlurRadius="10"
                          ShadowDepth="3" />
    </Border.Effect>
    <Grid Background="White" />
</Border>

1 个答案:

答案 0 :(得分:0)

最大化窗口时,窗口不会变小。 Window 包含 Border以及阴影,因此您认为较小的只是窗口内部边框的Margin。 / p>

您可以创建带有触发器的Style,该触发器检查父Maximized的{​​{1}}状态。

Window

<Style x:Key="BorderWindowStyle" TargetType="{x:Type Border}"> <Setter Property="Margin" Value="10"/> <Setter Property="Effect"> <Setter.Value> <DropShadowEffect Color="Black" Direction="270" BlurRadius="10" ShadowDepth="3" /> </Setter.Value> </Setter> <Style.Triggers> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="Maximized"> <Setter Property="Margin" Value="0"/> <Setter Property="Effect" Value="{x:Null}"/> </DataTrigger> </Style.Triggers> </Style> 中删除样式中已设置的属性,并引用样式。

Border
相关问题