WPF Groupbox header position alignment
Solution 1
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
to2
- 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 borderJust 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.
Solution 2
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.
ambog36
Updated on June 05, 2022Comments
-
ambog36 about 2 years
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 theGroupBox
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. -
ambog36 over 14 yearsThanks! I was hoping it was a property that i overlooked but this approached worked.
-
Michael almost 4 yearsOk. SO what about center alignment? It's not as trivial as just align to right side.