Окно из экрана, когда максимизируется с помощью WPF окружает библиотеку интеграции

Я пользуюсь Библиотекой Интеграции Shell WPF для создания пользовательского хрома моего wpf приложения. Все хорошо, но при максимизации приложения, 6 или 7 пикселей вне экрана.

Это - код, который я использую:


38
задан Ilmari Karonen 13 March 2016 в 17:55
поделиться

1 ответ

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>
46
ответ дан 27 November 2019 в 03:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: