Изменить фон строки Datagrid в зависимости от значения datatable

Я борюсь с, казалось бы, простой проблемой: у меня есть сетка данных, которая привязана к таблице данных. Эта таблица данных содержит столбец с именем «COLORSTATUS» (значение перечисления) — я хочу раскрасить каждую строку таблицы данных в зависимости от ColorStatus. Я попытался создать преобразователь значений, но я не могу передать ему всю строку и/или Datatable. Я думал о подключении событий DataGridRow к сообщениям Caliburns, но как это сделать в XAML - все, что я могу получить, это элементы DataGrid.RowStyle.

<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.


person Christian Sauer    schedule 17.04.2013    source источник


Ответы (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>
person Rachel    schedule 17.04.2013
comment
Спасибо за ваш пост - я пришел с независимой душой, но ваши тоже работают. - person Christian Sauer; 17.04.2013