2013-04-17 5 views
2

겉으로보기에는 쉬운 문제로 고민하고 있습니다. 데이터 테이블에 바인딩 된 DataGrid가 있습니다. 이 Datatable에는 "COLORSTATUS"(열거 형 값)라는 열이 포함되어 있습니다. - ColorStatus에 따라 Datatable의 모든 행을 페인트하고 싶습니다. 값 변환기를 만들려고했지만 전체 행 및/또는 Datatable에 전달할 수 없습니다. Caliburns 메시지로 DataGridRow 이벤트를 연결하는 방법에 대해 알려 왔습니다. 그러나 XAML에서이 작업을 수행하는 방법은 모두 DataGrid.RowStyle 요소입니다. 데이터 테이블에 따라 Datagrid 행의 배경 변경 값

<DataGrid x:Name="excelDataTable_ExcelData" cal:Message.Attach="[Event AutoGeneratedColumns] = [Action HideTheColorColumn($source)]"> 
      ?? What to do here 
</DataGrid> 

나는이 솔루션에 정착 :
<DataGrid.RowStyle> 
     <Style TargetType="DataGridRow"> 
      <Setter Property="Background" Value="{Binding Row, Converter={StaticResource ExcelRowColorConverter}}"></Setter> 
     </Style> 
    </DataGrid.RowStyle> 

나는 당신이 "행"을 통과 할 수있는, 조금 놀라게했다. 변환기에 대한 힌트 : 전달 된 개체는 실제 DataRow입니다.

답변

1

변환기가 제대로 작동해야하지만 올바른 지점에 변환기를 적용해야합니다.

그냥 DataRow으로 전달하고 "COLORSTATUS"열 값을 가져온 다음 적절한 색상 브러시를 반환하십시오. 내가 independend의 soultion와 함께,하지만 당신도 작동 -

<DataGrid.Resources> 
    <Style TargetType="{x:Type DataGridRow }"> 
     <!-- DataContext will be your DataRow --> 
     <Setter Property="Background" 
       Value="{Binding Converter={StaticResource MyColorConverter}}" /> 
    </Style> 
</DataGrid.Resources> 
+0

예를 들어

는 귀하의 게시물을 주셔서 감사합니다. –