我有一个数据网格,它使用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。
如何实现这种行为?
答案 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
清除基础数据对象的任何值。