我有一个 DataGrid 应该显示来自数据表对象的值。
我需要它在数据表中为每个显示一行,但如果 DataTable 中的 ShowRow 列设置为 False,我需要除前 2 列之外的所有列都显示任何内容。现在我通过绑定到表的副本来实现这一点,在该副本中,我在需要时手动将值设置为空。
有没有更优雅的方法通过绑定来做到这一点?
我有一个 DataGrid 应该显示来自数据表对象的值。
我需要它在数据表中为每个显示一行,但如果 DataTable 中的 ShowRow 列设置为 False,我需要除前 2 列之外的所有列都显示任何内容。现在我通过绑定到表的副本来实现这一点,在该副本中,我在需要时手动将值设置为空。
有没有更优雅的方法通过绑定来做到这一点?
是的,您可以通过数据触发器来实现。
例子:
样品:
<Style x:Key="MyCellStyle" TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<!-- Hide text if MyProperty is "True" -->
<DataTrigger Binding="{Binding Path=MyProperty, Mode=OneWay}" Value="True">
<Setter Property="Foreground" Value="Transparent" />
</DataTrigger>
</Style.Triggers>
</Style>
当然还有其他隐藏文本的选项。我强烈建议不要操纵模型本身。而是影响内容可见性,因为这是所需的行为。
你需要创建你的自定义IValueConverter
和应该隐藏的值转换为空字符串