我有一个带风格的窗口
Background="Transparent", AllowsTransparency="True", WindowStyle="None", ResizeMode="NoResize".
我已经放置了自定义最小,最大,关闭按钮和实现的功能。因为我希望窗口在所有方面调整窗口大小。我用HwndSource
实现了它,效果很好。现在我担心的是我想要窗口的阴影效果。所以我将阴影效果放在边框上。
<Border CornerRadius="5" Margin="10">
<Border.BitmapEffect>
<DropShadowBitmapEffect ShadowDepth="10" Opacity=".5" Softness="9" />
</Border.BitmapEffect>
<Grid> **Content over here**</Grid>
</Border>
窗口获取阴影效果。但当我最大化窗口。因为我添加了边框,所以它不适合屏幕。我需要在窗口最大化时删除阴影效果,使其适合屏幕。当窗口未处于最大化状态时,应出现阴影效果。如何获得这个或有没有其他方法来获得这个...请帮我找到解决方案。
答案 0 :(得分:0)
我认为通过为Border创建样式,可以在代码中动态添加/删除阴影效果。您可以为边框创建这样的样式:
<Style x:Key="borderstyle" TargetType="Border">
<Setter Property="BitmapEffect">
<Setter.Value>
<DropShadowBitmapEffect ShadowDepth="10"> </DropShadowBitmapEffect>
</Setter.Value>
</Setter>
</Style>
然后在代码
中动态设置它borderelement.Style =(Style)Application.Current.MainWindow.Resources [“borderstyle”];
并使用以下代码将其删除
borderelement.Style = null
答案 1 :(得分:0)
您可以使用触发器来确定Window是否已最大化,然后在触发器设置器中删除效果。只需重载Window的模板,并在ControlTemplate触发器内添加一个触发器
<Window.Template>
<ControlTemplate TargetType="Window">
<Border x:Name="brd">
<Border.Effect>
<DropShadowEffect BlurRadius="20" Color="Black"/>
</Border.Effect>
<Grid Width="200" Height="200" MouseDown="Grid_MouseDown_1" Background="Red"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="WindowState" Value="Maximized">
<Setter Property="Effect" TargetName="brd" Value="{x:Null}"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Template>