【问题标题】:Highlight empty cell in DataGrid突出显示 DataGrid 中的空单元格
【发布时间】:2018-08-06 18:05:21
【问题描述】:

我正在从数据表中填充数据网格。数据表是在运行时创建的,并且存在未知数量的行和列。加载数据表时会创建列标题。如果数据表中有一个空单元格,我希望它突出显示。

我看了答案here。但它不起作用,它只突出显示单个列中的一个单元格,并且它们绑定到一个列。这是我做不到的。

我的代码:

<DataGrid x:Name="dataGrid" ItemsSource="{Binding DGLines}">
        <DataGrid.Columns>
            <DataGridTextColumn>
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="{x:Type TextBlock}">
                        <Style.Triggers>
                            <Trigger Property="Text" Value="">
                                <Setter Property="Background" Value="LightGreen"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

空单元格的值实际上是 null。我不确定这是否是问题所在。

在任何列中突出显示空单元格的正确样式是什么?

【问题讨论】:

  • 是的,我做到了。我标记为已接受,并投了赞成票。发表了感谢评论。但该评论已被删除,因为它不符合 cmets 的准则。

标签: wpf xaml


【解决方案1】:

您使用的是UserControl 还是Window? 如果是 Window 就使用这个

   <Window.Resources>
        <Style  TargetType="{x:Type DataGridCell}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Content.Text, RelativeSource={RelativeSource Self}}"  Value="" >
                    <Setter Property="Background" Value="LightGreen"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

否则,如果是 UserControl,只需将 Window.Resources 替换为 UserControl.Resources。 我相信已经有人问过类似的答案,但我找不到。

【讨论】: