WPF - 在DataGrid中绑定SolidColorBrush无法正常工作

时间:2015-04-10 12:09:15

标签: c# wpf data-binding datagrid

嗨,谢谢你的光临。

我需要在运行时将SolidColorBrush绑定到DataGrid单元格 - DataGrid的ViewModel包含SolidColorBrush类型的属性,并且列本身由DataGridTemplateColumn填充:

<DataGridTemplateColumn Header="source column" Width="3.5*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Border Background="{Binding Path=SourceColumnBackground}">
                <Label x:Name="txbSourceName" Content="{Binding Path=SourceColumnDescriptionString}"></Label>
            </Border>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding Path=DataContext.SourceColumns, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" 
                        DisplayMemberPath="ColumnDescription"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

(使用边框一直是测试,因为我有类似的问题将背景绑定到ComboBox(Windows 8.1))。

文本的绑定作为魅力,ComboBox的ItemsSource的绑定也起作用。唯一不起作用的是背景。​​

我在DataGrid外部(在周围的Grid中)使用Border和Background绑定测试它,如本示例所示(不同的属性,因为它没有绑定到DataGrid数据)并且运行良好。

我的问题简而言之:如果在DataGrid内部将SolidColorBrush绑定到Border,则不会产生任何可见效果 - 如果在外部,则相同的代码可以正常工作。有人可以帮忙吗?

提前感谢您的帮助!

(编辑因为代码块吃了一行)

2 个答案:

答案 0 :(得分:1)

使用与设置项目来源相同的方法设置绑定

{Binding Path=DataContext.SourceColumnBackground, RelativeSource={RelativeSource AncestorType={x:Type Window}}}

另外,请确保绑定到System.Windows.Media.Brush

答案 1 :(得分:0)

谢谢大家的帮助。 我找到了问题而且是我。我想给自己打电话的名字是明确在这里使用它们。

如果你想做我做的事,你可以使用我的原始代码。它按预期工作。如果你想知道我遇到了哪个问题 - 我创建了一个新的ViewModel属性绑定到DataGrid但我忘了更改ItemsSource绑定。

Mea culpa,mea maxima culpa ......