Проблема изменения цвета переднего плана ячейки таблицы данных WPF с использованием MultiBinding - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь изменить цвет переднего плана DataGridCell, а не всю строку, учитывая значение определенного содержимого ячейки.Например, если значение даты ячейки устарело, я хочу установить передний план на красный.Я почти там, где я использую MultiBinding, чтобы извлечь два значения из сетки данных и проанализировать его через конвертер значений, который реализует IMultiValueConverter.

Короче говоря, и без необходимости идти в сам конвертер, я написалследующий XAML: `

    <Style x:Key="CellHighlighterStyle">
        <Setter Property="my:ExtendedDataGrid.Foreground">
            <Setter.Value>
                <MultiBinding Converter="{StaticResource cellHighlighterConverter}">
                    <MultiBinding.Bindings>
                        <Binding RelativeSource="{RelativeSource self}"/>
                        <Binding Path="Row" Mode="OneWay"/>
                    </MultiBinding.Bindings>
                </MultiBinding>
            </Setter.Value>
        </Setter>            
    </Style>

I then added to my Datagrid : CellStyle =" {StaticResource CellHighlighterStyle} "`.

Теперь мой конвертер видит первое свойство Value[0] как DataGridCell, но второе значениеэто какой-то составленный DependencyProperty.Как будто он создал свойство по умолчанию или фиктивное свойство, когда я действительно хочу получить строку.На самом деле, мне бы очень хотелось получить объект класса, связанный с этой строкой.Моя DataGrid связана с List<of a class object>.

Я уверен, что я в нескольких дюймах.Как мне разобрать либо строку DataGrid, чтобы я мог извлечь значение поля, либо объект, связанный с этой строкой или самим столбцом, чтобы я мог вернуть цвет, который я хочу вернуть?ИЛИ, есть ли лучший способ для меня выборочно изменить свойства ячейки DataGrid, учитывая значение?

1 Ответ

1 голос
/ 02 мая 2011

DataContext ячейки должен быть объектом данных строки, попробуйте изменить вторую привязку следующим образом:

<Binding />

Который напрямую связывается с DataContext.

...