2012-12-28 84 views
1

窗口最大化,我与风格删除阴影效果时在WPF

Background="Transparent", AllowsTransparency="True", WindowStyle="None", ResizeMode="NoResize". 

我已经把自定义的最小,最大,关闭按钮和实施functionality.And因为我想在窗口上调整窗口大小的窗口所有的方面。我用HwndSource实施它,它工作正常。现在我的关注点是我想要窗口的阴影效果。所以我放置了像这样的阴影效果的边框。

<Border CornerRadius="5" Margin="10"> 

    <Border.BitmapEffect> 
     <DropShadowBitmapEffect ShadowDepth="10" Opacity=".5" Softness="9" /> 
    </Border.BitmapEffect> 

    <Grid> **Content over here**</Grid> 
</Border> 

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

回答

0

我认为可以通过为您的边框创建样式来在代码中动态添加/删除阴影效果。您可以创建一个样式为您的边界是这样的:

<Style x:Key="borderstyle" TargetType="Border"> 
       <Setter Property="BitmapEffect"> 
        <Setter.Value> 
         <DropShadowBitmapEffect ShadowDepth="10"> </DropShadowBitmapEffect> 
        </Setter.Value> 
       </Setter> 
      </Style> 

然后在代码中动态设置

borderelement.Style =(风格)Application.Current.MainWindow.Resources [“边框”] ;

,并通过使用下面的代码

borderelement.Style = NULL

0

可以使用触发器来确定是否窗口被最大化,然后在触发设定器,取出效果移除。只是窗口的超载模板和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>