在WPF中使用图片或图标代替DataGridCheckBoxColumn
我想将DataGridColumn中的复选框更改为选中时的图像和未选中时的另一个图像,我该怎么做? Ps:My 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
<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>