셀 값에 따라 WPF DataGrid 셀 배경색 변경
WPF DataGrid를 사용하면 셀 값을 기준으로 셀 모양을 사용자 정의할 수 있습니다. 그러나 DataGridCell
에 직접 스타일을 적용하면 개별 셀이 아닌 전체 행에 영향을 줍니다.
해결 방법은 다른 셀 내용이 포함된 특정 열을 대상으로 지정하는 것입니다. 예를 들어, "John"이라는 값이 있는 "이름" 열의 모든 셀을 강조 표시한다고 가정합니다.
TextBlock 기반 셀
TextBlocks가 포함된 열의 경우 열의 ElementStyle
에 있는 Trigger
을 사용하여 Text
값에 따라 Background
속성을 변경할 수 있습니다.
<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>
XAML에서의 사용법:
<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>
직접 속성 바인딩
Background
을 원하는 브러시를 반환하는 속성에 직접 바인딩할 수도 있습니다.
<code class="language-csharp">public string Name { get { return _name; } set { if (_name != value) { _name = value; OnPropertyChanged(nameof(Name)); OnPropertyChanged(nameof(NameBrush)); } } } public Brush NameBrush { get { switch (Name) { case "John": return Brushes.LightGreen; default: break; } return Brushes.Transparent; } }</code>
XAML 바인딩:
<code class="language-xml"><DataGridTextColumn Binding="{Binding Name}"> <DataGridTextColumn.ElementStyle> <Setter Property="Background" Value="{Binding NameBrush}"/> </DataGridTextColumn.ElementStyle> </DataGridTextColumn></code>
위 내용은 해당 값에 따라 WPF DataGrid에서 개별 셀의 배경색을 조건부로 어떻게 변경할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!