Tukar warna sel WPF DataGrid berdasarkan nilai
Dalam WPF DataGrid, menyesuaikan penampilan sel individu berdasarkan nilai tertentu boleh meningkatkan visualisasi data anda. Walau bagaimanapun, jika anda menghadapi masalah dengan keseluruhan baris yang diserlahkan apabila anda hanya mahu mewarna sel tertentu, anda mungkin perlu memeriksa kod anda untuk mengenal pasti punca utama.
Kod awal menetapkan DataGrid.CellStyle, tetapi kaedah ini mempengaruhi keseluruhan baris kerana DataContext ditetapkan kepada baris dan bukannya sel individu. Untuk menyelesaikan masalah ini, adalah disyorkan untuk menyasarkan lajur tertentu dan menyesuaikan penampilannya berdasarkan kandungan yang berbeza seperti teks, kotak kombo dan kotak semak. Berikut ialah contoh cara menukar latar belakang sel bernama "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>
Sebagai alternatif, anda boleh menggunakan ValueConverter untuk memetakan nilai kepada warna, membolehkan anda mentakrif skema warna secara fleksibel. Berikut ialah contoh:
<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>
Penggunaan Penukar Nilai:
<code class="language-xml"><DataGridTextColumn Binding="{Binding Name}"> <DataGridTextColumn.CellStyle> <Setter Property="Background" Value="{Binding Name, Converter={StaticResource NameToBrushConverter}}"/> </DataGridTextColumn.CellStyle> </DataGridTextColumn></code>
Akhir sekali, kaedah ketiga membolehkan anda mengikat latar belakang sel terus ke sifat yang mengembalikan warna yang sepadan. Dengan melaksanakan antara muka INotifyPropertyChanged, anda boleh menyebabkan perubahan harta benda mencetuskan kemas kini dalam antara muka pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Warna Latar Belakang Sel DataGrid WPF Berdasarkan Nilai Sel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!