값에 따라 WPF DataGrid 셀 색상 변경
WPF DataGrid를 사용자 정의할 때 특정 값에 따라 다양한 셀 색상을 적용할 수 있습니다. 이렇게 하려면 DataGrid 열의 XAML에서 스타일이나 값 변환기를 사용할 수 있습니다. 그러나 대상 셀이 아닌 전체 행에 실수로 영향을 미치는 스타일을 발견하면 어떻게 될까요?
문제 분석
이 문제가 발생하는 경우 개별 셀이 아닌 전체 행에 적용되는 DataGrid의 CellStyle 속성을 참조하고 있기 때문일 수 있습니다. 이 문제를 해결하려면 DataGrid의 각 특정 열에 대해 CellStyle 속성을 지정해야 합니다.
열에 스타일 적용
개별 셀의 모양을 맞춤설정하려면 대신 열의 ElementStyle 속성을 대상으로 지정하세요. 예를 들어 특정 값(예: "이름" 열의 "John")이 있는 모든 셀을 강조 표시하려면 다음 XAML을 사용할 수 있습니다.
<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>
이 방법을 사용하면 지정된 기준을 충족하는 셀에만 색상 변경이 적용됩니다.
값 변환기 사용
스타일을 사용하는 것 외에도 값 변환기를 활용하여 셀 색상을 수정할 수도 있습니다. 값 변환기를 사용하면 바인딩된 값을 브러시와 같은 다른 값으로 변환할 수 있습니다. 다음 C# 예제를 살펴보세요.
<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>
변환기를 사용하려면 이를 XAML의 Window.Resources 섹션에 포함하고 다음과 같이 셀 배경을 값 변환기에 바인딩합니다.
<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>
속성에 직접 바인딩
셀 배경색을 제어하는 또 다른 방법은 원하는 브러시를 반환하는 데이터 모델의 속성에 직접 바인딩하는 것입니다. 이 방법을 사용하려면 기본 데이터가 변경될 때 배경색이 업데이트되도록 속성 변경 알림을 처리해야 합니다.
위 내용은 WPF DataGrid: 값에 따라 행이 아닌 셀, 색상을 변경하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!