禁用时清空单元格

时间:2018-08-31 07:06:00

标签: c# wpf datagrid datagridcell

我有一个数据网格,它使用DataGridCell类型的样式来禁用某些单元格,具体取决于来自同一行另一个单元格的值。

以下是样式的XAML

    <Style x:Key="testCellStyle" TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Segment}" Value="0">
                <Setter Property="IsEnabled" Value="False"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Segment}" Value="1">
                <Setter Property="IsEnabled" Value="True"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

这部分按预期工作。

现在,由于这些列绑定到相应的VM属性,这些属性会相应地更新数据库,因此我需要先禁用该单元格,然后再清空该单元格,以免将垃圾值持久保存在数据库中。

作为C#的新手,如果可能,我更愿意使用XAML。

如何实现这种行为?

2 个答案:

答案 0 :(得分:0)

我的窍门:将Foreground设置为Transparent,这意味着该值仍然存在但不可见。

<DataTrigger Binding="{Binding Segment}" Value="0">
    <Setter Property="IsEnabled" Value="False"/>
    <Setter Property="Foreground" Value="Transparent"/>
</DataTrigger>

答案 1 :(得分:0)

  

作为C#的新手,如果可能,我更愿意使用XAML。

XAML是一种标记语言。它不能用于清除源对象中的任何值。

您应该做的就是将Segment属性设置为1后立即清除数据对象中的值,并且应该以编程方式执行此操作,无论是在Segment类中,还是在其他类中属性是自己定义的,也可以是通过设置Segment属性的类定义的。

您既不能也不应该使用DataTrigger清除基础数据对象的任何值。