禁用时清空单元格

问题描述 投票:-2回答:2

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

下面是Style的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属性,我需要在禁用它之前清空单元格,以便不在DB中保留垃圾值。

作为C#的新手,如果可能的话,我更愿意将XAML用于此目的。

如何实现这种行为?

c# wpf datagrid datagridcell
2个回答
0
投票

作为C#的新手,如果可能的话,我更愿意将XAML用于此目的。

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

你应该做的是在Segment属性设置为1时立即清除数据对象中的值,并且应该以编程方式执行此操作,无论是在Segment和其他属性本身定义的类中,还是从设置的类中Segment财产。

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


0
投票

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

<DataTrigger Binding="{Binding Segment}" Value="0">
    <Setter Property="IsEnabled" Value="False"/>
    <Setter Property="Foreground" Value="Transparent"/>
</DataTrigger>
© www.soinside.com 2019 - 2024. All rights reserved.