2011-02-17 8 views
1

가능한지 궁금합니다. 이 데이터 격자에는 3 열과 2 행이 있습니다. 내가 원하는 것은 입력 한 데이터에 따라 DataGrid에서 URL 열의 배경을 변경하는 것입니다.WPF에서 프로그래밍 방식으로 DataGrid 행 색상을 변경하려면 어떻게합니까?

<DataGrid 
    x:Name="mylistview" 
    BorderBrush="#FF373737" 
    Background="Black" 
    VerticalGridLinesBrush="#FF232323" 
    HorizontalGridLinesBrush="#FF212121"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="URL" Foreground="{Binding rowColor}" Binding="{Binding url}"/> 
     <DataGridTextColumn Header="Version" Foreground="White" Binding="{Binding version}"/> 
     <DataGridTextColumn Header="Valid" Foreground="White" Binding="{Binding valid}"/> 
    </DataGrid.Columns> 
</DataGrid> 

행 DataGrid를 채우기 위해 사용되는 내 클래스 : 여기

public class myData 
{ 
    public string url {get; set;} 
    public string version{get; set;} 
    public string valid{get; set;} 

    //this should be the value that changes the bg color 
    public string rowColor{ get; set; } 
} 

을 그리고 컨트롤에 행을 추가하는 내 방식이다 :

여기

내 XAML 코드의 샘플입니다

myData data1 = new myData(); 
data1.url = "http://google.com"; 
data1.valid = "yes"; 
data1.version = "1"; 
data1.rowColor = "#FF000000"; 
this.mylistview.Items.Add(data1); 

data1.url = "http://yahoo.com"; 
data1.valid = "no"; 
data1.version = "1"; 
data1.rowColor = "#000000FF"; 
this.mylistview.Items.Add(data1); 

두 가지 요소가 있습니다. 각 행에는 고유 한 색이 있어야합니다. 첫 번째 것은 빨간색 이어야하며 두 번째 것은 파란색이어야합니다. 난 정말 컨트롤을 rowColor 값을 사용하는 방법을 모르겠다.

이 기능을 사용하려면 어떻게해야합니까?

답변

3

rowColor은 문자열을 반환하면 안됩니다. public 일 때 RowColor으로 바꿉니다. 대신 실제 색상 브러시를 반환하십시오. (사용자의 색상이 잘못되었습니다. 첫 번째는 불투명 한 검정색이고 두 번째는 투명한 파란색입니다.)

예 :

data1.rowColor = Brushes.Red; 
data2.rowColor = Brushes.Blue; 

당신이 정말 당신이 XAML을 구문 분석 할 때 사용되는 value converter 또는 표준 변환을 사용할 수있는 문자열에서 구문 분석해야하는 경우

public Brush rowColor { get; set; } 
.

그 외에도 해당 속성을 Foreground에 바인딩하면 작동하지 않을지 잘 모르겠다.

관련 문제