値に基づいて WPF DataGrid セルの色を変更します
WPF DataGrid では、特定の値に基づいて個々のセルの外観をカスタマイズすると、データの視覚化を強化できます。ただし、特定のセルのみに色を付けたいときに行全体が強調表示されるという問題が発生する場合は、コードを調べて根本原因を特定する必要がある場合があります。
最初のコードは DataGrid.CellStyle を設定しますが、DataContext は個々のセルではなく行に設定されるため、このメソッドは行全体に影響します。この問題を解決するには、特定の列をターゲットにし、テキスト、コンボ ボックス、チェック ボックスなどのさまざまなコンテンツに基づいて外観をカスタマイズすることをお勧めします。ここでは、「John」という名前のセルの背景を変更する方法の例を示します。
<code class="language-xml"><DataGridTextColumn Binding="{Binding Name}"> <DataGridTextColumn.CellStyle> <Style TargetType="DataGridCell"> <Style.Triggers> <Trigger Property="Text" Value="John"> <Setter Property="Background" Value="LightGreen"/> </Trigger> </Style.Triggers> </Style> </DataGridTextColumn.CellStyle> </DataGridTextColumn></code>
代わりに、ValueConverter を使用して値を色にマッピングし、カラー スキームを柔軟に定義できます。以下に例を示します:
<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>
ValueConverter の使用法:
<code class="language-xml"><DataGridTextColumn Binding="{Binding Name}"> <DataGridTextColumn.CellStyle> <Setter Property="Background" Value="{Binding Name, Converter={StaticResource NameToBrushConverter}}"/> </DataGridTextColumn.CellStyle> </DataGridTextColumn></code>
最後に、3 番目のメソッドを使用すると、セルの背景を、対応する色を返すプロパティに直接バインドできます。 INotifyPropertyChanged インターフェイスを実装すると、プロパティの変更によってユーザー インターフェイスの更新がトリガーされるようになります。
以上がセル値に基づいて WPF DataGrid セルの背景色を条件付きで変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。