考虑到特定单元格内容的值,我试图更改DataGridCell的前景颜色,而不是整行。例如,如果单元格的日期值已过期,那么我想将Foreground设置为红色。我几乎在使用MultiBinding从数据网格中提取两个值并通过实现IMultiValueConverter的值转换器解析它。
简而言之,在没有需要进入转换器本身的情况下,我编写了以下XAML:`
<Style x:Key="CellHighlighterStyle">
<Setter Property="my:ExtendedDataGrid.Foreground">
<Setter.Value>
<MultiBinding Converter="{StaticResource cellHighlighterConverter}">
<MultiBinding.Bindings>
<Binding RelativeSource="{RelativeSource self}"/>
<Binding Path="Row" Mode="OneWay"/>
</MultiBinding.Bindings>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
I then added to my Datagrid :
CellStyle =“{StaticResource CellHighlighterStyle}”``。
现在,我的转换器将第一个Value[0]
属性视为DataGridCell,但第二个值是某种由DependencyProperty构成的属性。就像我在想要获取行时创建了一个默认属性或虚拟属性一样。实际上,我真的希望得到与该行关联的类对象。我的DataGrid绑定到List<of a class object>
。
我确信我离我很远。我如何解析DataGrid行,以便我可以提取字段的值,或绑定到该行或列本身的对象,以便我返回我想要返回的颜色?或者,有没有更好的方法让我在给定值的情况下有选择地改变DataGrid Cell的属性?
答案 0 :(得分:1)
单元格的DataContext应该是该行的数据对象,请尝试将第二个绑定更改为:
<Binding />
直接绑定到DataContext。