WPF / MVVM / XAML DataGridView - установка цвета фона ячейки на основе значения ячейки - PullRequest
0 голосов
/ 14 января 2020

Мне нужно настроить цвет фона конкретной ячейки в сетке данных на основе значения ячейки. В приведенном ниже коде, если пользователь активен, я хочу установить зеленый цвет фона ячейки «Active».

                  AutoGenerateColumns="False"
                  CanUserAddRows="False" 
                  CanUserDeleteRows="False"
                  IsReadOnly="True"
                  ItemsSource="{ Binding Path=Users }" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="User ID" Binding="{Binding UserID}" Width="Auto"/>
                <DataGridTextColumn Header="Surname" Binding="{Binding Surname}" Width="Auto"/>
                <DataGridTextColumn Header="Given Names" Binding="{Binding GivenNames}" Width="Auto"/>
                <DataGridTextColumn Header="Active" 
                                    Binding="{Binding Active, Converter={ StaticResource booleanToYesNoConverter} }" 
                                    Width="Auto"/>
            </DataGrid.Columns>
        </DataGrid>

Я новичок в WPF и MVVM, и я не знаю, какое лучшее решение. Я думал об установке атрибута фона с помощью конвертера значений:

<DataGridTextColumn Header="Active" 
                    Binding="{Binding Active, Converter={ StaticResource booleanToYesNoConverter} }"
                    Background="{ Binding Active, Converter={ StaticResource activeInactiveBackgroundColorConverter }}"
                    Width="Auto"/>

Я сделал это для другого элемента управления (StatusBarItem), и он работает нормально, но я не могу сделать это для DataGridView. Спасибо за любую помощь, спасибо.

1 Ответ

1 голос
/ 14 января 2020

Попробуйте этот способ, предоставив DataGridTextColumn стиль ячейки

<DataGridTextColumn  Binding="{Binding Active}"
 Header="Active" 
  Width="Auto">
    <DataGridTextColumn.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
           <Setter Property="Background" Value="{ Binding Active, Converter={ StaticResource activeInactiveBackgroundColorConverter }}"/>
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...