C# 禁用时清空单元格
我有一个datagrid,它使用DataGridCell类型的样式根据同一行的另一个单元格的值禁用某些单元格 下面是样式的XAMLC# 禁用时清空单元格,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">
<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
清除底层数据对象的任何值?有什么需要解释的?数据触发器检查某些属性的值并设置目标属性的值。