Цвет строки WPF DataGrid с несколькими связями (также) для владения свойством IsSelected? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть DataGrid с ItemsSource, подключенным к таблице SQL. Мне нужно раскрасить фон строки строк. Поэтому я установил стиль для DataRow:

     <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="Background">
                        <Setter.Value>
                            <MultiBinding Converter="{StaticResource rowColor}">
// here I'm passing DataRowView that gives me access to row data - this is working well
                                <Binding /> 
// below part is not working (compiling, but passing nothing)
                                <Binding Source="{RelativeSource Mode=Self}" Path="IsSelected" /> 
                            </MultiBinding>
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataGrid.RowStyle>

Дело в том, что мне нужно установить много цветов в зависимости от данных строки. Т.е. зеленый, желтый, красный ... Это для немедленного визуального распознавания статуса каждого элемента. Эта часть работает отлично.

Но мне также нужно раскрасить каждую строку, когда она находится в выбранном состоянии. В противном случае, после выбора все они имеют бесполезный фон RoyalBlue по умолчанию. поэтому для выбранных строк мне нужно было бы установить DarkGreen, DarkYellow, DarkRed ... et c. Отсюда MultiBinding и моя попытка передать собственное свойство IsSelected конвертеру. И это не работает. Что бы я ни пытался (и много пробовал, а также другие свойства), внутри моей функции Convert () значения [0] в порядке (DataRowView), но значения [1] всегда являются DependencyObject.Unset.

Как правильно это сделать?

1 Ответ

1 голос
/ 22 апреля 2020

Попробуйте установить свойство RelativeSource вместо Source:

<Binding RelativeSource="{RelativeSource Self}" Path="IsSelected" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...