views:

760

answers:

2

Is it possible to set the position alignment for a groupbox header in WPF? the default is to place in the top left corner of the groupbox outline but I would like it to be centered at the top. I know that you can set the properties of the text using:

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

but i'm looking to set the position of it with respect to the groupbox outline.

thanks!

+1  A: 

Changing the group-box-header alinment will result in non-OS-conform controls.

Therefore, I think you won't be able to change this using the default styles. A custom template will solve your problem.

winSharp93
+1  A: 

It's simple! Just edit Template of GroupBox:

In Blend, do the following :

  • Right click GroupBox > Edit Template > Edit a Copy > OK
  • Search for following section:

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

  • Also set HorizontalAlignment="Right"

You have just aligned the header to right!!! But bot the white gap behind it. For that,

  • Now search for following section :

    <Border BorderBrush="White" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3">
        <Border.OpacityMask>
            ...
        </Border.OpacityMask>
        ...
    </Border>
    
  • Add RenderTransformOrigin="0.5,0.5" to the border

  • Just above , add following code (this will shift the "white gap" behind header to right:

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

You are done! You just got a GroupBox with right aligned header!!!

Please tell me if this is what you required.

Mihir Gokani
Thanks! I was hoping it was a property that i overlooked but this approached worked.
ambog36
No problem! But if this answer solved your problem, please mark it as accepted, so that others facing similar problem can rely on it.
Mihir Gokani