WPF DataGrid 컨트롤을 사용할 때 일반적으로 데이터 값을 기반으로 셀의 시각적 모양을 사용자 정의해야 합니다. DataGrid.CellStyle을 사용하는 것은 쉬운 접근 방식처럼 보일 수 있지만 실수로 개별 셀이 아닌 전체 행에 스타일을 적용할 수 있습니다. 셀별 색상 지정을 구현하는 다른 방법을 살펴보겠습니다.
열의 특정 셀에 스타일을 적용하려면 각 DataGridTextColumn의 ElementStyle 속성을 사용자 지정하는 것이 좋습니다. 예를 들어 이름이 "John"인 셀의 배경색을 변경하려면 다음 코드를 사용합니다.
<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>
더 복잡한 음영 처리 논리의 경우 값 변환기를 사용할 수 있습니다. 다음은 이름 값을 해당 브러시에 매핑하는 예입니다.
<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>
사용방법:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!