2013-04-17 34 views
2

我掙扎着看似簡單的問題: 我有一個綁定到數據表的數據網格。此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」列值,然後返回相應的顏色畫筆。

例如,

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

感謝您爲您的文章 - 我帶着一個影響無關soultion,但你也行。 –

相關問題