我有一个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#的新手,如果可能的话,我更愿意将XAML用于此目的。
XAML是一种标记语言。它不能用于清除源对象中的任何值。
你应该做的是在Segment
属性设置为1时立即清除数据对象中的值,并且应该以编程方式执行此操作,无论是在Segment
和其他属性本身定义的类中,还是从设置的类中Segment
财产。
您既不能也不应该使用DataTrigger
清除基础数据对象的任何值。
我的诀窍:将Foreground
设置为Transparent
,这意味着值仍然存在但不可见。
<DataTrigger Binding="{Binding Segment}" Value="0">
<Setter Property="IsEnabled" Value="False"/>
<Setter Property="Foreground" Value="Transparent"/>
</DataTrigger>