Tout, je suis relativement nouveau à WPF. J'ai cherché la réponse à cette question, mais tout ce que j'ai trouvé est de savoir comment coloriser les lignes au moment de l'exécution et non les colonnes; par exemple les questions suivantes:
Comment puis-je modifier par programme la couleur des lignes de la grille de données dans WPF?
attribution par programme d'une couleur à une ligne dans DataGrid
Changer la couleur des cellules DataGrid en fonction des valeurs
et al.
J'ai vu la propriété CellStyle
sur les pages MSDN DataGrid mais son utilisation n'est pas du tout évidente pour moi malgré les recherches autour de cela aussi.
comment changer la couleur d'arrière-plan d'une colonne entière lors de l'exécution?
Merci pour votre temps.
La seule façon de le faire fonctionner est de définir les colonnes par moi-même (en n'utilisant pas AutoGenerate). La première chose à faire est donc 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 l'arrière-plan à une ressource statique que vous pouvez déclarer dans Window.Resources:
<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 manipulation de code ou xaml.
J'espère que ça aide.
Un peu vieux, mais voici comment procéder par programmation (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 également être appliquée aux colonnes non AutoGen.