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:

  1. Changement de WPF Ligne de grille de données de Couleur

  2. comment modifier de façon programmatique la couleur des lignes de données dans WPF?

  3. par programmation de l'affectation d'une couleur à une ligne dans la grille de données

  4. 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.

19
demandé sur Community 2013-03-26 21:54:25

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.

22
répondu Matan Shahar 2014-05-09 09:38:56

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.

13
répondu dotNET 2014-02-10 06:21:57