Проблема Изменение цвета переднего плана ячейки DataGrid WPF с использованием мультибинга

StackOverflow https://stackoverflow.com/questions/5860089

  •  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 />

Который связывается непосредственно к обработке данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top