【发布时间】:2013-05-12 08:23:36
【问题描述】:
关于 SO 上的 WPF 数据网格有很多问题,但我仍然要问我的问题,因为我无法从这些问题中得到我想要的...所以不要生我的气并尝试帮助我请回答漂亮:]。
提示:主要问题是:为什么我的触发器不起作用?:|
是否有一个 datagrid 属性禁止选择没有值的单元格? 我想我知道有类似的东西,但我现在找不到。如果没有这样的事情,你将如何解决这个事情?我正在考虑 selectedCellsChanged 上的事件或类似的事件。但我不确定如何解决。
如何根据里面的值设置单元格的背景属性? 正在寻找 DatagridCell(http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridcell.aspx) 的一些文本/内容/值属性,但对我没有任何帮助。 .. 我知道有一些值转换器,但我正在考虑使用触发器来解决这个问题。
一些信息:我设置了SelectionMode="Extended" + SelectionUnit="Cell"。
我尝试过使用触发器设置背景,但没有成功:
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="HasContent" Value="False">
<Setter Property="Background" Value="DarkGray"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
属性IsSelected 工作正常,但没有内容的东西不行。只是我在想(错误地)“”或null 没有内容吗?
还尝试了<Trigger Property="Content" Value=""> 和<Trigger Property="Content" Value="null">,但这些东西就是不想为我工作。我怎么了???
编辑:我找到了这个 Q/A - How do I change the background color of a cell using WPF Toolkit Datagrid 所以我想我会用它来处理第二个 Q,但我仍然看不出我的触发器有什么问题......
此外,如果我的触发器有效,我可以以某种方式将带有HasContent="False" 的单元格设置为不可选择(如果有类似的东西)。但我只需要让我的触发器工作:D
Edit2:当我设置 <Trigger Property="HasContent" Value="True"> 时,它适用于我的所有单元格。所以我猜它需要 null/"" 作为值。这让我有疑问:
如果我想要空值的特殊背景并禁用它们的选择,我应该如何解决这个问题?
Edit3: 禁用选择应该像这样工作:<Setter Property="Focusable" Value="false"/> 感谢WPF ListView turn off selection .. 这不起作用:D :'(
现在我只需要找出关于单元格的null 内容的触发器...有什么提示吗?
【问题讨论】:
-
这是一个非常简单的代码。它应该工作。在一个简单的项目中尝试一下。我认为您的视图或网格设置有问题。
-
@OlegIgnatov 我更新了 Q.. null 实际上是一些内容有点奇怪。
-
我没有给你的代码示例,但我认为这必须在 DataGridColumn 级别完成,例如使用 DataGridTemplateColumn 并在 DataTemplate 中指定绑定到 value、isenabled 和背景,如果 value 为 null,则可以显示/隐藏
标签: c# wpf datagrid background triggers