Выравнивание позиции заголовка WPF Groupbox

можно ли установить совмещение должности GroupBox Header в WPF? По умолчанию в верхнем левом углу GroupBox контур, но я хотел бы, чтобы он был центрирован вверху. Я знаю, что вы можете установить свойства текста:

<GroupBox Grid.Row="1" HorizontalAlignment="Center">
   <GroupBox.Header> 
      <TextBlock Text="Cash Match" Foreground="Black" FontWeight="Bold"/>
   </GroupBox.Header>
</GroupBox>

но я ищу, чтобы установить его положение относительно GroupBox контур.

2 ответов


это просто! Просто отредактируйте шаблон GroupBox:

в Blend выполните следующие действия:

  • щелкните группы > редактирование шаблонов > редактировать копировать > OK
  • поиск в следующем разделе:

    <Border x:Name="Header" Padding="3,1,3,0" 
            Grid.Column="1" Grid.Row="0" Grid.RowSpan="2">
        ...
    </Border>
    
  • изменить Grid.Column to 2

  • и набор HorizontalAlignment="Right"

вы только что выровняли заголовок направо!!! Но за ним-белая дыра. Для это,

  • теперь найдите следующий раздел :

    <Border BorderBrush="White" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3">
        <Border.OpacityMask>
            ...
        </Border.OpacityMask>
        ...
    </Border>
    
  • добавить RenderTransformOrigin="0.5,0.5" до границы

  • чуть выше , добавьте следующий код (это сдвинет "белый пробел" за заголовком справа:

    <Border.RenderTransform>
        <ScaleTransform ScaleX="-1"/>
    </Border.RenderTransform>
    

Вы молодец! Вы только что получили GroupBox с правым выровненным заголовком!!!

Пожалуйста, скажите мне, если это то, что вам требуется.


изменение alinment группового поля заголовка приведет к несоответствию ОС элементам управления.

поэтому, я думаю, что вы не сможете изменить это, используя стили по умолчанию. Пользовательский шаблон решит вашу проблему.