2016-04-19 90 views
5

私はWindowChromeを使用してウィンドウをカスタマイズしています。ウィンドウを最大化すると、エッジが画面から外れます。私はこの問題を解決するために、次のコードを使用します。WPF WindowChrome:最大化されたウィンドウのエッジが画面外です

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <WindowChrome.WindowChrome> 
     <WindowChrome CaptionHeight="50" CornerRadius="0" GlassFrameThickness="0" NonClientFrameEdges="None" ResizeBorderThickness="5" UseAeroCaptionButtons="False" /> 
    </WindowChrome.WindowChrome> 

    <Grid> 
     <Grid.Style> 
      <Style TargetType="{x:Type Grid}"> 
       <Setter Property="Margin" Value="0" /> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=WindowState}" Value="Maximized"> 
         <Setter Property="Margin" Value="{x:Static SystemParameters.WindowResizeBorderThickness}" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Grid.Style> 
     <Border BorderThickness="2" BorderBrush="Blue" Background="Yellow" /> 
    </Grid> 

</Window> 

私の問題は:エッジが画面の外にならないように、どのように私は、ピクセルの正確な数を取得することができます。

SystemParameters.WindowResizeBorderThicknessには正しい値が含まれていません。

答えて

1

最大化すると、WindowChromeは基本的にResizeBorderThicknessのサイズでオーバーラップします。

ちょうどあなたのグリッドスタイルにMarginようWindowChrome ResizeBorderThickness (5px)を使用し最大化しながら、あなたの窓completly見えるをしたい場合:

<Setter Property="Margin" Value="5" /> 

あなたがBorderのBorderThicknessをしたい場合はそれ以外の場合は目に見えるすることがありません ウィンドウが最大化されている間は、をに加えてMarginとしてくださいrグリッドスタイル。次にMargin7pxとなります。

+1

正しいピクセル数はどのように取得できますか? – Pearson

+0

これは参考になるかもしれません:http://stackoverflow.com/a/24818071/7277579 – Julian

関連する問題