2010-03-17 5 views
4

J'utilise le contrôle WPFToolkit DataGrid et je souhaitais redéfinir certains en-têtes de colonne afin que le texte d'en-tête soit affiché verticalement plutôt qu'horizontalement (les données de la colonne sont entièrement numériques et donc pas très large, mais le texte de l'en-tête est long). J'ai donc créé un DataTemplate et essayé d'obtenir le DataGridColumn.HeaderTemplate. Ceci est mon modèle:WPF - Alignement d'en-tête de colonne DataGrid

<DataTemplate x:Key="headerTemplate"> 
     <StackPanel VerticalAlignment="Bottom" HorizontalAlignment="Left" Background="Aqua"> 
      <StackPanel.LayoutTransform> 
       <RotateTransform Angle="-90"/> 
      </StackPanel.LayoutTransform> 
      <TextBlock Text="{Binding}" VerticalAlignment="Bottom" HorizontalAlignment="Left" Background="Pink"> 
      </TextBlock> 
     </StackPanel> 
    </DataTemplate> 

Cela fonctionne très bien, sauf que l'alignement de l'en-tête est toujours à gauche et au centre. Aucune combinaison d'alignements pour le StackPanel ou le TextBlock ne semble faire la moindre différence. Je voudrais que le texte soit aligné en bas et au milieu. Comment puis-je le faire faire ça?

Merci,

AT

Répondre

8

OK, trouvé la réponse. La propriété que recherchait: VerticalContentAlignment.

J'ai créé un style et que les pièces jointes en utilisant la propriété HeaderStyle, et cela a fonctionné :)

<Style x:Key="VerticalGridHeaderStyle" TargetType="tk:DataGridColumnHeader"> 
    <Setter Property="VerticalContentAlignment" Value="Bottom"/> 
</Style> 
1

Cela fonctionne également

<Style TargetType="{x:Type DataGridColumnHeader}"> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
</Style> 

Ajouter le x:Key="" si vous ne voulez pas cibler tous DataGridColumnHeader

Questions connexes