我现在有个DataGrid控件,后台cs有个背景颜色的属性,我想将这个属性绑定到DataGrid的列头的背景颜色(backGround)上,改变属性值时,DataGrid的列头背景色跟着变,请问DataGrid的式样该怎么写啊?
DataGrid的Background直接绑定那个属性就好了啊
记得变更的时候引发PropertyChanged就可以了
或者用DataTrigger
xaml代码
<DataGrid Margin="0" x:Name="dataGrid"
Grid.Row="0" Grid.Column="0"
>
<DataGrid.ColumnHeaderStyle>
<!-- 列头的背景色样式 -->
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="{Binding BBBBB}">
</Setter>
<Setter Property="Foreground" Value="Green"/>
<Setter Property="FontSize" Value="13" />
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
后台代码
private Brush bbbbb;
public Brush BBBBB
{
get
{
return bbbbb;
}
set
{
bbbbb = value;
Notify("BBBBB");
}
}
如上,背景色,没有效果啊 。求指导
@V587: 尝试下不要用style直接background={Binding BBBBB}
还不行的话尝试指定下source属性为你那个类的实例(由于是partial代码一般是不用的)
@BinLaw: 非常感谢你,但是你说的这个方法没明白怎么搞
看到这样一个例子 <Setter Property="FontSize" Value="{Binding ElementName=scroll, Path=Value}" /> 定义一个Scroll控件,绑定这个控件的Value是可行的,估计是我绑定的那个BBBBB有问题 。
@V587: 通过style的确是可以但是要依赖于上层的Datacontext 常见于mvvm模式
具体到你那个代码的话像那样用style需要在Gatagrid或者更上一级的Page里面设置Datacontext并且绑定到有那个BBBBB属性的数据源
像你那样的话 我手头没电脑也没法看看具体原因
@BinLaw:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}}, Path=ListHeaderRowBackground}">
</Setter>
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}}, Path=ListHeaderRowForeground}"/>
</Style>
</DataGrid.ColumnHeaderStyle>
搞定,上面这样子就可以了,谢谢了