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

时间:2011-05-02 17:08:47

标签: wpf datagrid multibinding

考虑到特定单元格内容的值,我试图更改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的属性?

1 个答案:

答案 0 :(得分:1)

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

<Binding />

直接绑定到DataContext。