在WPF中使用图片或图标代替DataGridCheckBoxColumn

在WPF中使用图片或图标代替DataGridCheckBoxColumn,wpf,xaml,datagrid,controls,styles,Wpf,Xaml,Datagrid,Controls,Styles,我想将DataGridColumn中的复选框更改为选中时的图像和未选中时的另一个图像,我该怎么做? Ps:My DataGridCheckBoxColumn的定义如下: <DataGridCheckBoxColumn Header="Priority" Binding="{Binding PRIORITY, Converter={StaticResource converter}}"/> 转换器正在将字节转换为布尔值。使用和属性为符合该值的复选框创建和设置不同的值 e、 g

我想将DataGridColumn中的复选框更改为选中时的图像和未选中时的另一个图像,我该怎么做? Ps:My DataGridCheckBoxColumn的定义如下:

 <DataGridCheckBoxColumn Header="Priority" Binding="{Binding PRIORITY, Converter={StaticResource converter}}"/>

转换器正在将字节转换为布尔值。

使用和属性为符合该值的
复选框创建和设置不同的值

e、 g


这将使列显示基于选中的
IsChecked
的图像,URI只是硬编码的,复选框被禁用,因为在ElementStyle中编辑不会更改绑定对象的任何属性。它的唯一目的是显示合适的图像

(此处未设置
EditingElementStyle
,因此,如果用户再次单击单元格进行编辑,将显示一个正常复选框,可以选中或取消选中该复选框。)


只需补充一点,如果您希望使用EditingElementStyle隐藏复选框,则与上面的代码相同,没有此问题。这里的问题是,如果之前未选中/聚焦单元格,则选中/取消选中时图像不会更改。那么如何解决这个问题呢?有什么想法吗?@user1624552:
ElementStyle
应该没有这个功能,你设置了
EditingElementStyle
吗?@H.B.是的,我设置了。我在您的示例中同时添加了上面提到的ElementStyle和EditingElementStyle(没有)。第一次单击复选框列时,复选框未选中/未选中,需要再次单击。一旦复选框列具有焦点,就没有问题了。
<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>