Проблема Изменение цвета переднего плана ячейки DataGrid WPF с использованием мультибинга
-
28-10-2019 - |
Вопрос
Я пытаюсь изменить цвет переднего плана DataGridCell, а не всю строку, учитывая значение конкретного содержания ячейки. Например, если значение даты ячейки не установлено, я хочу установить передний план на красный. Я почти там, где я использую многобинд для извлечения двух значений из сетки данных и анализа его через преобразователь значений, который реализует 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, но второе значение - это своего рода созданная зависимость. Как будто он создал свойство по умолчанию или фиктивное свойство, когда я действительно хочу получить ряд. На самом деле, я действительно хотел бы связать объект класса, связанный с этой строкой. Мой DataGrid связан с List<of a class object>
.
Я уверен, что я в нескольких дюймах. Как проанализировать либо строку DataGrid, чтобы я мог извлечь значение поля, либо объект, связанный с этой строкой или самого столбца, чтобы я мог вернуть цвет, который я хочу вернуть? Или, есть ли у меня лучший способ избирательно изменить свойства ячейки DataGrid с учетом значения?
Решение
DataContext ячейки должен быть объектом данных строки, попробуйте изменить второе привязка к этому:
<Binding />
Который связывается непосредственно к обработке данных.