WPF Groupbox header position alignment

前端 未结 2 1068
我寻月下人不归
我寻月下人不归 2020-12-11 03:10

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

相关标签:
2条回答
  • 2020-12-11 03:42

    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.

    0 讨论(0)
  • 2020-12-11 03:53

    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.

    0 讨论(0)
提交回复
热议问题