Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar Warna Sel DataGrid WPF Berdasarkan Nilai?

Bagaimana untuk Menukar Warna Sel DataGrid WPF Berdasarkan Nilai?

Barbara Streisand
Barbara Streisandasal
2025-01-23 09:22:11327semak imbas

How to Change WPF DataGrid Cell Colors Based on Values?

Tukar warna sel WPF DataGrid berdasarkan nilai data

Apabila menggunakan kawalan WPF DataGrid, anda biasanya perlu menyesuaikan penampilan visual sel berdasarkan nilai datanya. Semasa menggunakan DataGrid.CellStyle mungkin kelihatan seperti pendekatan yang mudah, ia mungkin secara tidak sengaja menggunakan gaya pada keseluruhan baris dan bukannya sel individu. Mari kita terokai cara alternatif untuk melaksanakan pewarnaan khusus sel.

Penggayaan berdasarkan lajur

Untuk menggunakan gaya pada sel tertentu dalam lajur, pertimbangkan untuk menyesuaikan sifat ElementStyle setiap DataGridTextColumn. Contohnya, untuk menukar warna latar belakang sel yang Namanya "John", gunakan kod berikut:

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

Penukar Nilai

Untuk logik teduhan yang lebih kompleks, anda boleh menggunakan penukar nilai. Berikut ialah contoh pemetaan nilai Nama ke berus yang sepadan:

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

Cara menggunakan:

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

Pengikatan Harta

Sebagai alternatif, anda boleh mengikat terus sifat Latar Belakang sel kepada sifat yang mengembalikan berus yang diingini. Dalam pendekatan ini, pastikan pemberitahuan perubahan sifat dinaikkan apabila kebergantungan warna berubah.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Warna Sel DataGrid WPF Berdasarkan Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn