在WPF DataGrid列上设置MultiBinding

时间:2011-05-02 14:47:54

标签: wpf wpfdatagrid

我正在尝试设置WPF DataGrid的样式,以便当属性从上一行更改时,会有一个可视指示器。首先,改变前景色。但是,当我这样做时,我的多值转换器中的绑定被破坏了。这似乎很奇怪,因为绑定对列的内容工作得很好。因此,在下面的示例中,显示了位置值,但是多值转换器正在为传入的每个值接收DependencyProperty.Unset。是否有人对我做错了什么有任何想法?

<DataGridTextColumn Header="Location" Binding="{Binding Location}">
    <DataGridTextColumn.Foreground>
        <MultiBinding Converter="{StaticResource ResourceKey=valueEqualityToBrush}">
           <Binding Path="Location" />
           <Binding Path="Location" RelativeSource="{RelativeSource Mode=PreviousData}" />
        </MultiBinding>
    </DataGridTextColumn.Foreground>
</DataGridTextColumn>

谢谢, 格雷格

2 个答案:

答案 0 :(得分:1)

您可能在“输出”窗口中出现此错误:

  

System.Windows.Data错误:36:无法找到用作RelativeSource的上一个元素,因为生成的上下文中没有父元素。

这显然意味着绑定无法找到兄弟姐妹,因为没有父母。我不知道是否有任何可行的解决办法......

答案 1 :(得分:1)

DataGridColumns不绑定到单元格内容以外的属性,因为它们不是元素树的一部分。这里有一个解决方法:http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/26/data-binding-the-isvisible-property-of-contextualtabgroup.aspx

只需使用DataContextSpy就可以了。