【问题标题】:WPF DataGrid disable a row but allow one cellWPF DataGrid 禁用一行但允许一个单元格
【发布时间】:2019-05-31 09:41:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: wpf mvvm datagrid wpfdatagrid


    【解决方案1】:

    您可以使用绑定到CheckBox 的源属性的触发器定义单元格样式,并在源属性返回falsetrue 时将单元格的IsEnabled 属性设置为false

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

    然后将除CheckBox 列之外的所有列的CellStyle 属性设置为这种样式:

    <DataGridTextColumn ... CellStyle="{StaticResource cellStyle}">
    

    【讨论】:

    • 感谢您的快速回复。我会马上试试这个。
    猜你喜欢
    • 1970-01-01
    • 2011-08-05
    • 2016-05-28
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2011-09-02
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多