2012-12-28 121 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>