Implementierung der bedingten Zellfärbung in WPF DataGrid
In WPF DataGrid kann die dynamische Anpassung von Zellenfarben basierend auf bestimmten Werten die visuelle Darstellung von Daten verbessern. Obwohl die Verwendung des DataGrid.CellStyle-Stils intuitiv erscheint, gilt er für die gesamte Zeile und nicht für einzelne Zellen.
Spaltenbasierte Anpassung:
Um zellenspezifische Farbänderungen zu erzielen, sollten Sie den Stil basierend auf der Spalte anpassen und dabei deren unterschiedlichen Inhalt berücksichtigen. Zum Beispiel:
<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>
In diesem Beispiel wird ein hellgrüner Hintergrund für Zellen festgelegt, die „John“ in der Spalte „Name“ enthalten.
Wertkonverter verwenden:
Alternativ können Sie den Wertekonverter verwenden, um die Daten in Farbe umzuwandeln:
<code class="language-csharp">public class NameToBrushConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, 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, CultureInfo culture) { throw new NotImplementedException(); } }</code>
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>
Direkte Attributbindung:
Schließlich bietet die direkte Bindung der Background-Eigenschaft an eine Eigenschaft, die den gewünschten Pinsel zurückgibt, einen alternativen Ansatz. In diesem Fall ist eine Benachrichtigung über Eigenschaftsänderungen erforderlich, wenn die Abhängigkeit ihre Farbe ändert.
Das obige ist der detaillierte Inhalt vonWie implementiert man bedingte Zellenfärbung in einem WPF-DataGrid?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!