2016-04-19 38 views
5

Uso WindowChrome per personalizzare una finestra. Quando massimizzo la finestra, i bordi sono fuori dallo schermo. Io uso il seguente codice per risolvere questo problema:Finestra WPFChrome: i bordi della finestra ingrandita sono fuori dallo schermo

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

Il mio problema: come posso ottenere il numero corretto di pixel, in modo che i bordi non sono fuori dello schermo.

SystemParameters.WindowResizeBorderThickness non contiene il valore corretto.

risposta

1

WindowChrome si sovrapporrà sostanzialmente alla dimensione di ResizeBorderThickness quando ingrandita.

Se volete che il vostro Window completamente visibile mentre massimizzato basta usare il WindowChrome ResizeBorderThickness (5px) come Margin nel vostro stile di griglia:

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

In caso contrario, se si desidera che il vostro Border BorderThicknessnon essere visibile mentre la finestra è ingrandita, dovresti usare il tuo Border's BorderThickness (2px) come Margin in aggiunta al WindowChrome ResizeBorderThickness (5px) in te r Stile griglia. Quindi lo Margin sarebbe 7px.

+1

E come posso ottenere il numero corretto di pixel? – Pearson

+0

Questo potrebbe essere utile: http://stackoverflow.com/a/24818071/7277579 – Julian