Использование Picture или Icon вместо DataGridCheckBoxColumn в WPF - PullRequest
2 голосов
/ 01 августа 2011

Я хочу изменить CheckBox, который находится внутри DataGridColumn, на изображение, когда оно проверено, и другое, когда оно не отмечено. Как я могу это сделать? PS: My DataGridCheckBoxColumn определяется так:

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

Преобразователь преобразует байты в логические значения.

1 Ответ

3 голосов
/ 01 августа 2011

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

Screencap

...