Comment verticalement les lignes de centre contenus dans un WPF DataGrid?
Je veux faire de l'enregistrement de données de VerticalAlignment=Center
dans la grille de données. Par défaut,les données de l'enregistrement VerticalAlignment=Top
, Il semble uglily. Pouvez-vous me fournir ce style?
Je définir mon style dans l'App.fichier xaml. Ce qui suit est mon DataGrid style:
<Style x:Key="DataGridView" TargetType="DataGrid">
<Setter Property="AlternatingRowBackground" Value="AliceBlue"></Setter>
<Setter Property="AlternationCount" Value="1"></Setter>
<Setter Property="AutoGenerateColumns" Value="False"></Setter>
<Setter Property="GridLinesVisibility" Value="Horizontal"></Setter>
<Setter Property="VerticalGridLinesBrush" Value="DarkGray"></Setter>
<Setter Property="HorizontalGridLinesBrush" Value="DarkGray"></Setter>
<Setter Property="RowHeight" Value="32"></Setter>
</Style>
OriginalL'auteur qing xu | 2011-11-30
Vous devez vous connecter pour publier un commentaire.
Essayez de définir
VerticalContentAlignment="Center"
sur leDataGrid
:ou vous pouvez ajouter un setter pour votre style:
Lorsqu'il est appliqué à
ItemsControl
s, cette propriété en général modifie l'alignement de chaque élément conteneur. Dans votre cas, cela devrait faire de toutes les lignes d'aligner leur contenu au centre.Mise à JOUR
Semble que le WPF intégré
DataGrid
ne suit pas la règle.La solution dépend du type de colonnes que vous utilisez.
Pour
DataGridTemplateColumn
utiliser unCellTemplate
comme ceci:Pour
DataGridTextColumn
, ensembleElementStyle
:J'ai essayé ce
DataGridTextColumn
, mais la propriété de son parentDataGridBoundColumn
, il doit donc travailler pourDataGridCheckBoxColumn
etDataGridHyperlinkColumn
aussi.Mise à jour 2
BTW, il y a une autre solution.
Par ailleurs,les colonnes dans la grille de données ont été créés par mon csharp code,pas généré automatiquement par le contrôle de lui-même. Parce que mon ItemsSource est DataView et je ne peux pas savoir les colonnes qui je veux afficher(Ils viennent de la base de données et les colonnes sont dynamiques).
S'il vous plaît, voir mon post mis à jour. J'ai essayé les deux options de moi-même et ils font un travail. La seule chose est que vous ne serez probablement pas en mesure d'inclure cela dans le
DataGrid
'sStyle
, mais vous devriez être en mesure d'attribuer les propriétés lorsque vous créez vos colonnes.merci pour votre solution,je vais suivre votre suggestion et de créer de la DataGridTemplateColumn au lieu de DataGridTextColumn,il fonctionne.Comme vous l'avez dit,le VerticalContentAlignment pouvez travailler sur DataGridTemplateColumn,DataGridCheckboxColumn et d'autres, sauf DataGridTextColumn.
+1 pour l'effort
OriginalL'auteur Pavel Gatilov