Rumah >pembangunan bahagian belakang >C++ >WPF DataGrid: Bagaimana Menukar Sel, Bukan Baris, Warna Berdasarkan Nilai?
Tukar warna sel WPF DataGrid berdasarkan nilai
Apabila menyesuaikan WPF DataGrid, anda mungkin mahu menggunakan warna sel yang berbeza berdasarkan nilai tertentu. Untuk melakukan ini, anda boleh menggunakan gaya atau penukar nilai dalam XAML lajur DataGrid. Tetapi apa yang berlaku apabila anda menemui gaya yang secara tidak sengaja mempengaruhi keseluruhan baris dan bukannya sel sasaran?
Analisis Masalah
Jika anda menghadapi masalah ini, ini mungkin kerana anda merujuk sifat CellStyle DataGrid, yang digunakan pada keseluruhan baris dan bukannya sel individu. Untuk menyelesaikan masalah ini, sifat CellStyle mesti ditentukan untuk setiap lajur tertentu dalam DataGrid.
Gunakan gaya pada lajur
Untuk menyesuaikan penampilan sel individu, sasarkan sifat ElementStyle lajur itu. Contohnya, jika anda ingin menyerlahkan semua sel dengan nilai tertentu (cth. "John" dalam lajur "Nama"), anda boleh menggunakan XAML 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>
Menggunakan kaedah ini, perubahan warna hanya akan digunakan pada sel yang memenuhi kriteria yang ditetapkan.
Gunakan penukar nilai
Selain menggunakan gaya, anda juga boleh memanfaatkan penukar nilai untuk mengubah suai warna sel. Penukar nilai membolehkan anda menukar nilai terikat kepada nilai yang berbeza, seperti berus. Pertimbangkan contoh C# berikut:
<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>
Untuk menggunakan penukar, masukkannya dalam bahagian Window.Resources XAML anda dan ikat latar belakang sel pada penukar nilai seperti ini:
<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>
Ikat terus pada sifat
Cara lain untuk mengawal warna latar belakang sel adalah dengan mengikat terus pada sifat dalam model data yang mengembalikan berus yang diingini. Kaedah ini memerlukan anda mengendalikan pemberitahuan perubahan harta untuk memastikan warna latar belakang dikemas kini apabila data asas berubah.
Atas ialah kandungan terperinci WPF DataGrid: Bagaimana Menukar Sel, Bukan Baris, Warna Berdasarkan Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!