11

GroupBox Header是否可以在 WPF 中为 a 设置位置对齐?默认放置在轮廓的左上角,GroupBox但我希望它位于顶部的中心。我知道您可以使用以下方法设置文本的属性:

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

但我希望设置它相对于GroupBox轮廓的位置。

4

2 回答 2

18

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

在 Blend 中,执行以下操作:

  • 右键单击 GroupBox > 编辑模板 > 编辑副本 > 确定
  • 搜索以下部分:

    <Border x:Name="Header" Padding="3,1,3,0" 
            Grid.Column="1" Grid.Row="0" Grid.RowSpan="2">
        ...
    </Border>
    
  • 更改Grid.Column2

  • 还设置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 !!!

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

于 2010-01-21T18:08:49.270 回答
2

更改 group-box-header alinment 将导致不符合操作系统的控件。

因此,我认为您将无法使用默认样式更改此设置。自定义模板将解决您的问题。

于 2010-01-20T18:55:25.370 回答