WPF DataGrid コントロールを使用する場合、通常はデータ値に基づいてセルの外観をカスタマイズする必要があります。 DataGrid.CellStyle の使用は簡単なアプローチのように思えるかもしれませんが、誤って個々のセルではなく行全体にスタイルを適用してしまう可能性があります。セル固有の色付けを実装する別の方法を検討してみましょう。
列内の特定のセルにスタイルを適用するには、各 DataGridTextColumn の ElementStyle プロパティをカスタマイズすることを検討してください。たとえば、名前が「John」であるセルの背景色を変更するには、次のコードを使用します:
<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>
より複雑なシェーディング ロジックの場合は、値コンバーターを使用できます。以下は、Name 値を対応するブラシにマッピングする例です:
<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>
使用方法:
<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>
あるいは、セルの Background プロパティを、目的のブラシを返すプロパティに直接バインドすることもできます。このアプローチでは、色の依存関係が変更されるたびにプロパティ変更通知が生成されるようにします。
以上が値に基づいて WPF DataGrid セルの色を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。