2010-08-16 5 views
1

WPF Datagrid를 인터페이스 개체 목록과 바인딩했습니다. ClsEmployee 클래스는 속성 Empl_Id, Empl_Name, Department, Address 및 City_name을 사용하여 I_Employee 인터페이스를 구현합니다.행 설정 방법 WPF DataGrid의 배경색 DataGrid의 값을 기반으로 프로그래밍 방식으로 (WPF & C#)

목록 _emplList;

을 고려하면 _emplList에는 10 개의 항목이 있습니다.

dgEmployeeGrid.ItemsSource = _emplList;

질문 : 사용자가 버튼을 클릭하면 이제 City_name을 읽을 수 있습니다. City_name에 따라, 나는 C# 코드를 통해 동적으로 행의 색 (각 행마다 색이 다를 수 있음)을 설정할 수 있어야합니다.

어떻게 도와 드릴까요?

미리 감사드립니다.

답변

2

그리드에서 적절한 유형의 "값"을 취한 다음 해당 행의 배경색을 ValueConverter와 함께 해당 필드에 바인드하여 Color brush 또는 다른 종류의 브러시 (예 : 그것은 의미가 있습니다) 당신이 거기에 넣고 싶습니다.

EDIT 여기

브러시 색에 BOOL 변환하는 변환기이다. 이 클래스에는 부울 값이 속성과 일치 할 때 사용되는 브러시를 설정하는 "True"및 "False"라는 두 개의 속성이 있습니다. 변환기는 한 가지 방법이며 브러시를 부울 값으로 다시 변환하지 않습니다.

XAML은

[ValueConversion(typeof(bool), typeof(Brush))] 
public class BoolToBrushConverter : IValueConverter 
{ 
    public Brush True 
    { 
     get; set; 
    } 

    public Brush False 
    { 
     get; set; 
    } 

    public object Convert(object value, Type targetType, 
          object parameter, CultureInfo culture) 
    { 
     if (targetType != typeof(Brush)) 
     { 
      return null; 
     } 

     return ((bool) value) ? True : False; 
    } 

    public object ConvertBack(object value, Type targetType, 
           object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

결합 값의 예를 컨버터의 인스턴스 집합 속성

<cga:BoolToBrushConverter x:Key="trueIsGreen" 
    True="Green" 
    False="Red"/> 

C# 변환 코드를 생성하고 소요 목적에 필드로 변환 브러쉬

<Ellipse Width="10" Height="10" 
     Fill="{Binding Path=Reviewer.IsMentor, Mode=OneWay, 
         Converter={StaticResource trueIsGreen}}"/> 

WPF에서 데이터 바인딩에 익숙하고 솔루션 측면을 자세히 설명하지는 않지만 Reviewer.IsMentor이 true 일 때 변환기는 "녹색"브러시 (변환기를 만들 때 보낸)를 제공합니다. 타원의 Fill 속성

+0

안녕하세요. Dave, 저는 WPF를 처음 접했습니다. 몇 가지 코드를 제공해 주시겠습니까? – ksvimal

관련 문제