Changer la couleur de fond de la colonne entière de DataGrid WPF à L'exécution
tous, je suis relativement nouveau à WPF. J'ai cherché la réponse à cette question, mais tout ce que j'ai trouvé, c'est comment colorer les lignes à l'exécution et non les colonnes; par exemple, les questions suivantes:
Changement de WPF Ligne de grille de données de Couleur
comment modifier de façon programmatique la couleur des lignes de données dans WPF?
par programmation de l'affectation d'une couleur à une ligne dans la grille de données
Changement de grille de données de la cellule de la couleur basée sur les valeurs
et coll.
j'ai vu l' CellStyle
propriété sur l' MSDN DataGrid pages mais son utilisation n'est pas évident du tout pour moi, malgré les recherches autour de ce.
comment changer la couleur de fond d'une colonne entière au moment de l'exécution?
Merci pour votre temps.
2 réponses
la seule façon dont je l'ai fait fonctionner est de configurer les colonnes par moi-même, (en n'utilisant pas L'Autogénérat). Donc, la première chose à faire est de définir les colonnes:
<DataGrid x:Name="Frid" ItemsSource="{Binding Path=.}">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name"
Binding="{Binding Path=FirstName}">
</DataGridTextColumn>
<DataGridTextColumn Header="Last Name"
Binding="{Binding Path=LastName}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
ensuite vous devez définir chaque colonne CellStyle et lier le fond à une ressource statique que vous pouvez déclarer à Window.Ressources:
<Window x:Class="WpfApplication1.MainWindow" ...>
<Window.Resources>
<SolidColorBrush x:Key="clBr" Color="White" />
</Window.Resources>
...
Colonnes:
<DataGridTextColumn Header="First Name"
Binding="{Binding Path=FirstName}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Background"
Value="{StaticResource clBr}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
alors vous pouvez simplement manipuler la ressource statique par la manipulation de code ou xaml.
j'Espère que ça aide.
un peu vieux, Mais voici comment vous pouvez le faire programmatiquement (pour les colonnes AutoGen):
private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
e.Column.CellStyle = new Style(typeof(DataGridCell));
e.Column.CellStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty, new SolidColorBrush(Colors.LightBlue)));
}
la même approche peut être appliquée aux colonnes non-Autogéniques aussi.