Настройка цвета фона ячейки данных wpf

1

У меня есть DataGrid, цвет фона ячейки которого должен быть двух видов.

  1. Серый, если ячейка не имеет значения
  2. Белый (по умолчанию), если ячейка имеет какое-либо значение

Я написал код ниже для достижения этой функциональности, но он не работает.

<UserControl.Resources>
    <Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
            <Trigger Property="HasContent" Value="False">
                <Setter Property="Background" Value="Gray"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

<DataGrid CellStyle="{StaticResource DataGridCellStyle}">

Может кто-нибудь объяснить, почему?

  • 0
    Вы установили фоновое локальное значение для White ?
  • 0
    Не требуется ... по умолчанию только белый. Отредактированный комментарий !!
Теги:
wpf
datagrid

1 ответ

4
Лучший ответ

Это происходит потому, что Content DataGridCell является TextBlock (или TextBox когда ячейка редактирует). Таким образом, даже пустая ячейка содержит пустой TextBlock (TextBox), то HasContent свойство HasContent никогда не становится false.

Это должно работать, если вы не используете собственный шаблон с ячейками:

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Content.Text, RelativeSource={RelativeSource Self}}"  Value="" >
            <Setter Property="Background" Value="Gray"/>
        </DataTrigger>
    </Style.Triggers>
</Style>
  • 0
    Итак, как достичь упомянутой функциональности?
  • 0
    @ user1603970 Я верю, что DataTrigger + IValueConverter DataTrigger IValueConverter , но не обязательно. Я работаю над чем сейчас.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню