Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁用时清空单元格_C#_Wpf_Datagrid_Datagridcell - Fatal编程技术网

C# 禁用时清空单元格

C# 禁用时清空单元格,c#,wpf,datagrid,datagridcell,C#,Wpf,Datagrid,Datagridcell,我有一个datagrid,它使用DataGridCell类型的样式根据同一行的另一个单元格的值禁用某些单元格 下面是样式的XAML <Style x:Key="testCellStyle" TargetType="{x:Type DataGridCell}"> <Style.Triggers> <DataTrigger Binding="{Binding Segment}" Value="0">

我有一个datagrid,它使用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实现这一目的


如何实现这种行为?

我的技巧:将
前景设置为
透明,这意味着值仍然存在,但不可见

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

作为C#的新手,如果可能的话,我更愿意使用XAML实现这一目的

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

您应该做的是在
属性设置为1后立即清除数据对象中的值,并且您应该以编程方式执行此操作,可以在定义了
和其他属性的类中执行,也可以从设置
属性的类中执行


您既不能也不应该使用
DataTrigger

@PrabalKajla清除基础数据对象的任何值。不,当您的属性段==0时,它只是将单元格的显示(单元格的前景)更改为透明。谢谢您的解决方案,但它不会为我解决问题!我正在使用
ElementStyle
DataTrigger
为相关列寻找解决方案,请您进一步解释为什么不应该使用
DataTrigger
清除底层数据对象的任何值?有什么需要解释的?数据触发器检查某些属性的值并设置目标属性的值。