У меня есть DataGrid
, цвет фона ячейки которого должен быть двух видов.
Я написал код ниже для достижения этой функциональности, но он не работает.
<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}">
Может кто-нибудь объяснить, почему?
Это происходит потому, что 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>
DataTrigger
+ IValueConverter
DataTrigger
IValueConverter
, но не обязательно. Я работаю над чем сейчас.
White
?