값에 따라 WPF DataGrid 셀 색상 변경
WPF DataGrid에서 특정 값을 기반으로 개별 셀의 모양을 사용자 정의하면 데이터 시각화가 향상될 수 있습니다. 그러나 특정 셀에만 색상을 지정하려고 할 때 전체 행이 강조 표시되는 데 문제가 있는 경우 코드를 검사하여 근본 원인을 식별해야 할 수도 있습니다.
초기 코드에서는 DataGrid.CellStyle을 설정하지만 DataContext가 개별 셀이 아닌 행에 설정되기 때문에 이 메서드는 전체 행에 영향을 줍니다. 이 문제를 해결하려면 특정 열을 대상으로 하고 텍스트, 콤보 상자, 확인란 등 다양한 콘텐츠를 기반으로 모양을 사용자 지정하는 것이 좋습니다. 다음은 "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>
또는 ValueConverter를 사용하여 값을 색상에 매핑하여 색 구성표를 유연하게 정의할 수 있습니다. 예를 들면 다음과 같습니다.
<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>
ValueConverter 사용법:
<code class="language-xml"><DataGridTextColumn Binding="{Binding Name}"> <DataGridTextColumn.CellStyle> <Setter Property="Background" Value="{Binding Name, Converter={StaticResource NameToBrushConverter}}"/> </DataGridTextColumn.CellStyle> </DataGridTextColumn></code>
마지막으로 세 번째 방법을 사용하면 셀의 배경을 해당 색상을 반환하는 속성에 직접 바인딩할 수 있습니다. INotifyPropertyChanged 인터페이스를 구현하면 속성 변경으로 인해 사용자 인터페이스에서 업데이트가 트리거될 수 있습니다.
위 내용은 셀 값에 따라 WPF DataGrid 셀 배경색을 조건부로 변경하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!