WPF DataGrid отключает строку, но разрешает одну ячейку

У меня есть DataGrid в WPF. Крайняя левая ячейка в каждой строке — это CheckBox, которая устанавливает свойство Enabled в модели строки (через RowViewModel).

Когда CheckBoxне установлен в определенной строке, эта строка в DataGrid должна быть отключена, поэтому все элементы управления в других столбцах строки должны быть отключены, но не в ячейке CheckBox.

Как мне проще всего добиться этого, по-прежнему разрешая активировать ячейку CheckBox, чтобы пользователь мог щелкнуть CheckBox в самой левой ячейке в строке (чтобы пользователь мог снова включить объект, следовательно, включить всю строку)


person Johan    schedule 31.05.2019    source источник


Ответы (1)


Вы можете определить стиль ячейки с помощью триггера, который привязывается к исходному свойству CheckBox и устанавливает для свойства IsEnabled ячейки значение false, когда исходное свойство возвращает false или true:

<Style x:Key="cellStyle" TargetType="DataGridCell">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Enabled}" Value="False">
            <Setter Property="IsEnabled" Value="False" />
        </DataTrigger>
    </Style.Triggers>
</Style>

Затем вы устанавливаете свойство CellStyle всех столбцов, кроме столбца с CheckBox, в этот стиль:

<DataGridTextColumn ... CellStyle="{StaticResource cellStyle}">
person mm8    schedule 31.05.2019
comment
Спасибо за быстрый ответ. Я попробую это прямо сейчас. - person Johan; 31.05.2019