WPF Groupbox标头位置对齐

时间:2010-01-20 18:47:36

标签: wpf header alignment groupbox

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

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

但我希望根据GroupBox大纲设置它的位置。

2 个答案:

答案 0 :(得分:12)

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

在Blend中,执行以下操作:

  • 右键单击GroupBox&gt;编辑模板&gt;编辑副本&gt;行
  • 搜索以下部分:

    <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"添加到边框

  • 就在上面,添加以下代码(这会将标题后面的“white gap”移到右边:

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

你完成了!你刚刚得到一个具有右对齐标题的GroupBox !!!

请告诉我这是否是你所要求的。

答案 1 :(得分:2)

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

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