WPF Groupbox 标题位置对齐

11

在WPF中,能否设置GroupBoxHeader位置对齐?默认情况下,GroupBox的位置在左上角,但我希望它位于顶部居中。我知道可以使用以下代码设置文本属性:

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

但是我想将其位置设置相对于 GroupBox 边框。

2个回答

21

很简单!只需要编辑GroupBox的模板:

在Blend中,按照以下步骤操作:

  • 右键点击GroupBox > 编辑模板 > 复制并编辑 > 确定
  • 搜索以下部分:

    <Border x:Name="Header" Padding="3,1,3,0" 
            Grid.Column="1" Grid.Row="0" Grid.RowSpan="2">
        ...
    </Border>
    
  • Grid.Column更改为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!!!

请告诉我这是否是您需要的。


谢谢!我本来希望它是一个我忽略的属性,但这种方法可行。 - ambog36
好的。那么居中对齐呢?这并不像只是将其右对齐那么简单。 - Michael

2
改变分组框标题的对齐方式会导致控件不符合操作系统标准。因此,我认为您无法使用默认样式更改此设置。使用自定义模板可以解决您的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接