Maison > développement back-end > C++ > Comment modifier les couleurs des cellules WPF DataGrid en fonction des valeurs ?

Comment modifier les couleurs des cellules WPF DataGrid en fonction des valeurs ?

Barbara Streisand
Libérer: 2025-01-23 09:22:11
original
370 Les gens l'ont consulté

How to Change WPF DataGrid Cell Colors Based on Values?

Modifier la couleur des cellules WPF DataGrid en fonction de la valeur des données

Lors de l'utilisation du contrôle WPF DataGrid, vous devez généralement personnaliser l'apparence visuelle de la cellule en fonction de la valeur de ses données. Bien que l'utilisation de DataGrid.CellStyle puisse sembler une approche simple, elle peut par inadvertance appliquer des styles à la ligne entière au lieu de cellules individuelles. Explorons d'autres moyens de mettre en œuvre une coloration spécifique à une cellule.

Style basé sur les colonnes

Pour appliquer des styles à des cellules spécifiques d'une colonne, pensez à personnaliser la propriété ElementStyle de chaque DataGridTextColumn. Par exemple, pour changer la couleur de fond d'une cellule dont le Nom est "John", utilisez le code 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

Convertisseur de valeur

Pour une logique d'ombrage plus complexe, vous pouvez utiliser des convertisseurs de valeurs. Voici un exemple de mappage des valeurs Name aux pinceaux correspondants :

<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

Comment utiliser :

<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

Reliure de propriété

Vous pouvez également lier directement la propriété Background de la cellule à une propriété qui renvoie le pinceau souhaité. Dans cette approche, assurez-vous que la notification de changement de propriété est déclenchée chaque fois que la dépendance de couleur change.

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