首页 文章

使用MultiBinding更改WPF DataGrid单元格的前景颜色时出现问题

提问于
浏览
0

考虑到特定单元格内容的值,我试图更改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 = ""` .

现在,我的转换器将第一个 Value[0] 属性视为DataGridCell,但第二个值是某种由DependencyProperty构成的属性 . 就像它在我想要获取行时创建了一个默认属性或虚拟属性 . 实际上,我真的希望得到与该行相关联的类对象 . 我的DataGrid绑定到 List<of a class object> .

我相信我离我很远 . 我如何解析DataGrid行,以便我可以提取字段的值,或绑定到该行或列本身的对象,以便我返回我想要返回的颜色?或者,有没有更好的方法让我有选择地改变给定值的DataGrid单元格的属性?

1 回答

  • 1

    单元格的DataContext应该是行的数据对象,尝试将第二个绑定更改为:

    <Binding />
    

    它直接绑定到DataContext .

相关问题