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