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