2016-04-19 15 views
5

Ich verwende WindowChrome, um ein Fenster anzupassen. Wenn ich das Fenster maximiere, sind die Ränder außerhalb des Bildschirms. Ich verwende den folgenden Code, dies zu beheben:WPF WindowChrome: Ränder des maximierten Fensters sind außerhalb des Bildschirms

<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> 

Mein Problem: Wie kann ich die richtige Anzahl von Pixeln erhalten, so dass die Kanten nicht aus dem Bildschirm sind.

SystemParameters.WindowResizeBorderThickness enthält nicht den richtigen Wert.

Antwort

1

Der WindowChrome überlappt bei Maximierung grundsätzlich um die Größe ResizeBorderThickness.

Wenn Sie Ihre Fenster komplett sichtbar während maximiert benutzen Sie einfach die WindowChrome ResizeBorderThickness (5px) als Margin in Ihrem Grid-Stil:

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

Andernfalls, wenn Sie Ihre Border wollen die BorderThicknessnicht sichtbar sein Während das Fenster maximiert ist, sollten Sie Ihren Border's BorderThickness (2px) als Margin zusätzlich zum WindowChrome ResizeBorderThickness (5px) in Ihnen verwenden r Gitterstil. Dann wäre die Margin7px.

+1

Und wie bekomme ich die richtige Anzahl von Pixeln? – Pearson

+0

Dies könnte hilfreich sein: http://stackoverflow.com/a/24818071/7277579 – Julian

Verwandte Themen