> 백엔드 개발 > C++ > WPF DataGrid: 값에 따라 행이 아닌 셀, 색상을 변경하는 방법은 무엇입니까?

WPF DataGrid: 값에 따라 행이 아닌 셀, 색상을 변경하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-23 09:17:10
원래의
988명이 탐색했습니다.

WPF DataGrid: How to Change Cell, Not Row, Color Based on Value?

값에 따라 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿