Heim > Backend-Entwicklung > C++ > Wie ändere ich WPF DataGrid-Zellenfarben basierend auf Werten?

Wie ändere ich WPF DataGrid-Zellenfarben basierend auf Werten?

Barbara Streisand
Freigeben: 2025-01-23 09:22:11
Original
324 Leute haben es durchsucht

How to Change WPF DataGrid Cell Colors Based on Values?

WPF DataGrid-Zellenfarbe basierend auf dem Datenwert ändern

Wenn Sie das WPF DataGrid-Steuerelement verwenden, müssen Sie normalerweise das visuelle Erscheinungsbild der Zelle basierend auf ihrem Datenwert anpassen. Auch wenn die Verwendung von DataGrid.CellStyle wie ein einfacher Ansatz erscheint, werden möglicherweise versehentlich Stile auf die gesamte Zeile und nicht auf einzelne Zellen angewendet. Lassen Sie uns alternative Möglichkeiten zur Implementierung einer zellspezifischen Färbung erkunden.

Spaltenbasiertes Styling

Um Stile auf bestimmte Zellen in einer Spalte anzuwenden, sollten Sie die ElementStyle-Eigenschaft jeder DataGridTextColumn anpassen. Um beispielsweise die Hintergrundfarbe einer Zelle mit dem Namen „John“ zu ändern, verwenden Sie den folgenden Code:

<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>
Nach dem Login kopieren

Wertkonverter

Für eine komplexere Schattierungslogik können Sie Wertekonverter verwenden. Hier ist ein Beispiel für die Zuordnung von Namenswerten zu entsprechenden Pinseln:

<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>
Nach dem Login kopieren

Anwendung:

<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>
Nach dem Login kopieren

Eigenschaftsbindung

Alternativ können Sie die Hintergrundeigenschaft der Zelle direkt an eine Eigenschaft binden, die den gewünschten Pinsel zurückgibt. Stellen Sie bei diesem Ansatz sicher, dass die Benachrichtigung über Eigenschaftsänderungen immer dann ausgelöst wird, wenn sich die Farbabhängigkeit ändert.

Das obige ist der detaillierte Inhalt vonWie ändere ich WPF DataGrid-Zellenfarben basierend auf Werten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage