WPF DataGrid отключить строку, но разрешить одну ячейку - PullRequest
1 голос
/ 31 мая 2019

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

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

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

1 Ответ

1 голос
/ 31 мая 2019

Вы можете определить стиль ячейки с триггером, который связывается со свойством источника 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}">
...