Используйте свойства ElementStyle
и EditingElementStyle
для создания и установки другого Template
для CheckBox
, который соответствует этому.
например,
<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
не задан здесь, поэтому, если пользователь снова щелкает ячейку, чтобы отредактировать ее, появляется обычный флажок, который можно проверить или снять.)