Pergunta

É possível definir o alinhamento de posição para um GroupBox Header em wpf? O padrão é colocar no canto superior esquerdo do GroupBox contorno, mas eu gostaria que fosse centrado no topo. Eu sei que você pode definir as propriedades do texto usando:

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

Mas estou procurando definir a posição disso em relação ao GroupBox contorno.

Foi útil?

Solução

É simples! Apenas editar modelo de grupo:

Na mistura, faça o seguinte:

  • Clique com o botão direito do mouse em grupo> Modelo de edição> Editar uma cópia> OK
  • Pesquise a seção seguinte:

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

  • Também definido HorizontalAlignment="Right"

Você acabou de alinhar o cabeçalho para a direita !!! Mas botam a diferença branca por trás dele. Por isso,

  • Agora procure a seção seguinte:

    <Border BorderBrush="White" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3">
        <Border.OpacityMask>
            ...
        </Border.OpacityMask>
        ...
    </Border>
    
  • Adicionar RenderTransformOrigin="0.5,0.5" para a fronteira

  • Logo acima, adicione o seguinte código (isso mudará o "Gap branco" atrás do cabeçalho para a direita:

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

Você terminou! Você acabou de ter uma caixa de grupo com cabeçalho alinhado direito !!!

Por favor, diga -me se é isso que você exigiu.

Outras dicas

A alteração do alinhamento do cabeçalho do grupo resultará em controles não-conformados.

Portanto, acho que você não será capaz de alterar isso usando os estilos padrão. Um modelo personalizado resolverá seu problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top