嗨,谢谢你的光临。
我需要在运行时将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,则不会产生任何可见效果 - 如果在外部,则相同的代码可以正常工作。有人可以帮忙吗?
提前感谢您的帮助!
本
(编辑因为代码块吃了一行)
答案 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 ......