Maison > développement back-end > C++ > WPF DataGrid : Comment modifier la couleur d'une cellule, et non d'une ligne, en fonction de la valeur ?

WPF DataGrid : Comment modifier la couleur d'une cellule, et non d'une ligne, en fonction de la valeur ?

Barbara Streisand
Libérer: 2025-01-23 09:17:10
original
988 Les gens l'ont consulté

WPF DataGrid: How to Change Cell, Not Row, Color Based on Value?

Modifier la couleur des cellules WPF DataGrid en fonction de la valeur

Lors de la personnalisation du WPF DataGrid, vous souhaiterez peut-être appliquer différentes couleurs de cellules en fonction de valeurs spécifiques. Pour ce faire, vous pouvez utiliser des styles ou des convertisseurs de valeurs dans le XAML de la colonne DataGrid. Mais que se passe-t-il lorsque vous rencontrez un style qui affecte par inadvertance la ligne entière au lieu de la cellule cible ?

Analyse du problème

Si vous rencontrez ce problème, c'est peut-être parce que vous faites référence à la propriété CellStyle de DataGrid, qui s'applique à la ligne entière plutôt qu'à des cellules individuelles. Pour résoudre ce problème, la propriété CellStyle doit être spécifiée pour chaque colonne spécifique du DataGrid.

Appliquer des styles aux colonnes

Pour personnaliser l'apparence d'une cellule individuelle, ciblez plutôt la propriété ElementStyle de la colonne. Par exemple, si vous souhaitez mettre en évidence toutes les cellules avec une valeur spécifique (par exemple « John » dans la colonne « Nom »), vous pouvez utiliser le XAML suivant :

<code class="language-xml"><DataGridTextColumn Binding="{Binding Name}">
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <Trigger Property="Text" Value="John">
                    <Setter Property="Background" Value="LightGreen" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </DataGridTextColumn.ElementStyle>
</DataGridTextColumn></code>
Copier après la connexion

En utilisant cette méthode, les changements de couleur ne seront appliqués qu'aux cellules qui répondent aux critères spécifiés.

Utiliser le convertisseur de valeur

En plus d'utiliser des styles, vous pouvez également profiter de convertisseurs de valeurs pour modifier les couleurs des cellules. Les convertisseurs de valeurs vous permettent de convertir une valeur liée en une valeur différente, telle qu'un pinceau. Prenons l'exemple C# suivant :

<code class="language-csharp">public class NameToBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string input = (string)value;
        switch (input)
        {
            case "John":
                return Brushes.LightGreen;
            default:
                return DependencyProperty.UnsetValue;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}</code>
Copier après la connexion

Pour utiliser un convertisseur, incluez-le dans la section Window.Resources de votre XAML et liez l'arrière-plan de la cellule au convertisseur de valeur comme ceci :

<code class="language-xml"><Window.Resources>
    <local:NameToBrushConverter x:Key="NameToBrushConverter" />
</Window.Resources>

...

<DataGridTextColumn Binding="{Binding Name}">
    <DataGridTextColumn.ElementStyle>
        <Setter Property="Background" Value="{Binding Name, Converter={StaticResource NameToBrushConverter}}" />
    </DataGridTextColumn.ElementStyle>
</DataGridTextColumn></code>
Copier après la connexion

Lier directement aux propriétés

Une autre façon de contrôler la couleur d'arrière-plan des cellules consiste à se lier directement à une propriété du modèle de données qui renvoie le pinceau souhaité. Cette méthode nécessite que vous gériez les notifications de modification de propriété pour garantir que la couleur d'arrière-plan est mise à jour lorsque les données sous-jacentes changent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal