C# 设置数据网格单元格背景颜色wpf
我有一个C# 设置数据网格单元格背景颜色wpf,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个DataGrid,它的单元格背景颜色必须是两种 灰色,如果单元格没有值 如果单元格有任何值,则为白色(默认值) 我写了下面的代码来实现这个功能,但它不起作用 <UserControl.Resources> <Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}"> <Style.Triggers> <Trigger Pro
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}">
有人能解释一下原因吗?这是因为
DataGridCell
的内容是TextBlock
(或者单元格编辑时是TextBox
)。因此,即使一个空单元格也包含一个空的TextBlock
(TextBox
),即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>
因为DataGridCell
的内容是TextBlock
(或者单元格编辑时是TextBox
)。因此,即使一个空单元格也包含一个空的TextBlock
(TextBox
),即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>
是否已将背景本地值设置为白色
?不需要此选项…默认值仅为白色。编辑评论!!是否已将背景本地值设置为白色
?不需要…默认值仅为白色。编辑评论!!那么如何实现上面提到的功能呢?@user1603970我相信DataTrigger
+IValueConverter
可以做到,但不能肯定。“我现在正在处理比现在更多的问题。@user1603970已解决。”IValueConverter
是不需要的。那么如何实现上面提到的功能呢?@user1603970我相信DataTrigger
+IValueConverter
可以做到,但不确定。“我现在正在处理比现在更多的问题。@user1603970已解决。”<不需要代码>IValueConverter
。