Créer un style pour TextBlock dans DataGridTextColumn
Je veux créer un style global qui définit la VerticalAlignment
à Center
pour tous TextBlock
contrôles à l'intérieur d'un DataGrid
ou à l'intérieur d'un DataGridTextColumn
.
Je ne veux pas copier ce qui suit dans chaque DataGridTextColumn
parce que c'est répétitif.
<DataGridTextColumn Header="Some Property" Binding="{Binding SomeProperty}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
J'ai essayé quelque chose comme ce qui suit, mais cela ne fonctionne pas car DataGridTextColumn
n'hérite pas de FrameworkElement
ou FrameworkContentElement
. DataGrid
lui-même ne mais tout autre emballage j'essaie conduit à des erreurs:
<Style TargetType="DataGridTextColumn">
<Setter Property="ElementStyle">
<Setter.Value>
<Style TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Setter.Value>
</Setter>
</Style>
source d'informationauteur timmkrause
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir un
CellStyle
comme ci-dessous:Et l'affecter à la grille de données:
CellStyle="{StaticResource DataGridCellStyle}"
.De cette façon, toutes vos cellules ont un contenu centré.
MODIFIER: Le code ci-dessus est extraite de l'un de mes projets et contient également le code pour supprimer les lignes de la grille dans la grille de données. Vous pouvez les récupérer en changeant
Grid
àBorder
dans le modèle. Comme ceci:Créer un style comme une ressource statique
Ensuite, vous pouvez l'affecter à la ElementStyle de la DataGridTextColumn
Suffit d'utiliser la
DataGridTemplateColumn
: