【问题标题】:Remove shadow effect when window is maximised in wpf在 wpf 中最大化窗口时删除阴影效果
【发布时间】:2012-12-28 07:29:36
【问题描述】:

我有一个带有样式的窗口

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>

window 获得阴影效果。但是当我最大化窗口时。它不适合屏幕,因为我添加了边框。我需要在窗口最大化时删除阴影效果,以使其适合屏幕。当窗口未处于最大化状态时,应该会出现阴影效果。如何获得这个或有任何其他方法可以获得这个..请帮助我找到解决方案。

【问题讨论】:

    标签: wpf wpf-controls


    【解决方案1】:

    我认为可以通过为边框创建样式来在代码中动态添加/删除阴影效果。您可以为边框创建一个样式,如下所示:

    <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

    【讨论】:

      【解决方案2】:

      您可以使用触发器来确定窗口是否已最大化,然后在触发器设置器中移除效果。只需为 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>
      

      【讨论】:

        猜你喜欢
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多