WPF DataGrid 禁用一行但允许一个单元格

WPF DataGrid disable a row but allow one cell

我在 WPF 中有一个 DataGrid。 每行中最左边的单元格是 CheckBox,它在行的模型上设置 Enabled 属性(通过 RowViewModel)。

CheckBox 在某一行上未选中时,DataGrid 中的该行应被禁用,因此该行其他列中的所有控件都应被禁用,但 CheckBox 单元格。

我怎样才能最简单地实现这一点,仍然允许启用 CheckBox 单元格,以便用户可以单击行中最左侧单元格中的 CheckBox(这样用户仍然可以启用再次对象因此也启用了完整的行)

您可以定义一个带有触发器的单元格样式,该触发器绑定到 CheckBox 的源 属性 并将单元格的 IsEnabled 属性 设置为 false 当来源 属性 returns falsetrue:

<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}">