ホームページ >バックエンド開発 >C++ >値に基づいて WPF DataGrid セルの色を変更する方法

値に基づいて WPF DataGrid セルの色を変更する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-23 09:22:11371ブラウズ

How to Change WPF DataGrid Cell Colors Based on Values?

データ値に基づいて WPF DataGrid セルの色を変更します

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。