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