Я пользуюсь Библиотекой Интеграции Shell WPF для создания пользовательского хрома моего wpf приложения. Все хорошо, но при максимизации приложения, 6 или 7 пикселей вне экрана.
Это - код, который я использую:
Windows обрезает края окна при его максимизации, чтобы скрыть то, что обычно является краями изменения размера. Это можно обойти, установив прокси-границу между окном и содержимым, а затем увеличив ее толщину при увеличении.
Я изменил пример, поставляемый с библиотекой, чтобы сделать это, те же основные изменения могут быть сделаны в вашем примере:
<ControlTemplate TargetType="{x:Type local:SelectableChromeWindow}">
<Border BorderBrush="Green">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="BorderThickness" Value="0"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ThisWindow, Path=WindowState}" Value="Maximized">
<Setter Property="BorderThickness" Value="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowResizeBorderThickness}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid [...]/>
</Border>
</ControlTemplate>
Надеюсь, это поможет.
Для .net 4.5 и выше, SystemParameters немного отличаются, например:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:MainWindow}}, Path=WindowState}" Value="Maximized">
<Setter Property="BorderThickness" Value="{Binding Source={x:Static SystemParameters.WindowResizeBorderThickness}}"/>
</DataTrigger>