我想将DataGridColumn内部的CheckBox更改为一个图像,当它被选中时,将另一个更改为未选中时,我该怎么办? Ps:我的DataGridCheckBoxColumn定义如下:
<DataGridCheckBoxColumn Header="Priority" Binding="{Binding PRIORITY, Converter={StaticResource converter}}"/>
Converter正在将字节转换为布尔值。
答案 0 :(得分:3)
使用ElementStyle
和EditingElementStyle
属性为符合该属性的CheckBox
创建并设置不同的Template
。
e.g。
<DataGridCheckBoxColumn Binding="{Binding IsActive}">
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="IsEnabled" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<Image MaxWidth="32" MaxHeight="32">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="Images/Error.ico" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, RelativeSource={RelativeSource AncestorType=CheckBox}}" Value="True">
<Setter Property="Source" Value="Images/Default.ico" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>
这使得列显示基于IsChecked
的图像,URI只是硬编码并且CheckBox被禁用,因为ElementStyle中的编辑不会更改绑定对象上的任何属性。它的唯一目的是显示合适的图像。
( EditingElementStyle
未设置在此处,因此如果用户再次单击该单元格进行编辑,则会显示正常的CheckBox,可以选中或取消选中。)