我有一个绑定到列表的数据网格,每个单元格值都绑定到唯一的布尔值。
<UserControl.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Have1}" Value="True">
<Setter Property="Background" Value="#263DDE36"/>
</DataTrigger>
<DataTrigger Binding="{Binding Have1}" Value="False">
<Setter Property="Background" Value="#26FF5454"/>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<DataGrid ItemsSource="{Binding AuditList}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Art1" Binding="{Binding Have1}"/>
<DataGridTextColumn Header="Art2" Binding="{Binding Have2}"/>
<DataGridTextColumn Header="Art2" Binding="{Binding Have3}"/>
</DataGrid.Columns>
</DataGrid>
这很好但我想将绑定“Have1”更改为单元格当前字符串或bool值。
<DataTrigger Binding="{Binding DataCellsValue="True"}" Value="True">
<Setter Property="Background" Value="#263DDE36"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataCellsValue="False"}" Value="False">
<Setter Property="Background" Value="#26FF5454"/>
</DataTrigger>
这是如何实现的?理想情况下,我只想对所有列使用一个setter,而不为每个列单元重复setter。
谢谢!
答案 0 :(得分:1)
试试你的Bindings:
{Binding Path=PathToProperty,
RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}}
对于Path,使用Cell的值的PropertyName ..不确定它的值/文本/内容......
有关详细信息,请参阅How do I use WPF bindings with RelativeSource?
编辑:
路径应该是内容。所以完整的解决方案是:
<UserControl.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Content,
RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}}"
Value="True">
<Setter Property="Background" Value="#263DDE36"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Content,
RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}}"
Value="False">
<Setter Property="Background" Value="#26FF5454"/>
</DataTrigger>
</Style.Triggers>
</Style>
答案 1 :(得分:1)
使用DataTrigger
,如下所示:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Content.Text}" Value="1">
<Setter Property="Background" Value="#263DDE36"/>
</DataTrigger>
现在,只要您没有定义
DataGridCell's
ControlTemplate
以上绑定将正常工作。如果您定义了模板,那么也要更改Content....
绑定。