首页 新闻 会员 周边 捐助

WPF 绑定 DataGrid 问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-08-12 10:08

我现在有个DataGrid控件,后台cs有个背景颜色的属性,我想将这个属性绑定到DataGrid的列头的背景颜色(backGround)上,改变属性值时,DataGrid的列头背景色跟着变,请问DataGrid的式样该怎么写啊?

V587的主页 V587 | 初学一级 | 园豆:15
提问于:2014-07-31 19:57
< >
分享
最佳答案
0

DataGrid的Background直接绑定那个属性就好了啊

记得变更的时候引发PropertyChanged就可以了

 

或者用DataTrigger

收获园豆:10
LeoLaw | 菜鸟二级 |园豆:226 | 2014-08-01 08:39

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 | 园豆:15 (初学一级) | 2014-08-04 16:01

@V587: 尝试下不要用style直接background={Binding BBBBB}

 

还不行的话尝试指定下source属性为你那个类的实例(由于是partial代码一般是不用的)

LeoLaw | 园豆:226 (菜鸟二级) | 2014-08-04 16:35

@BinLaw: 非常感谢你,但是你说的这个方法没明白怎么搞

 

看到这样一个例子    <Setter Property="FontSize" Value="{Binding ElementName=scroll, Path=Value}" />  定义一个Scroll控件,绑定这个控件的Value是可行的,估计是我绑定的那个BBBBB有问题 。

V587 | 园豆:15 (初学一级) | 2014-08-04 17:12

@V587: 通过style的确是可以但是要依赖于上层的Datacontext 常见于mvvm模式

具体到你那个代码的话像那样用style需要在Gatagrid或者更上一级的Page里面设置Datacontext并且绑定到有那个BBBBB属性的数据源

 像你那样的话 我手头没电脑也没法看看具体原因

LeoLaw | 园豆:226 (菜鸟二级) | 2014-08-04 17:42

@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>

 

搞定,上面这样子就可以了,谢谢了

V587 | 园豆:15 (初学一级) | 2014-08-12 10:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册