0

我有一个 DataGrid 应该显示来自数据表对象的值。

我需要它在数据表中为每个显示一行,但如果 DataTable 中的 ShowRow 列设置为 False,我需要除前 2 列之外的所有列都显示任何内容。现在我通过绑定到表的副本来实现这一点,在该副本中,我在需要时手动将值设置为空。

有没有更优雅的方法通过绑定来做到这一点?

4

2 回答 2

0

是的,您可以通过数据触发器来实现。

例子:

  • 您创建了一个名为MyCellStyle的自定义DataGridCell样式。
  • 每当代表行的特定模型中包含的属性MyProperty设置为True时,ForeGround 文本将设置为透明。
  • 您需要做的就是在您希望展示所需行为的任​​何 DataGridCell上使用它。

样品:

<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>

当然还有其他隐藏文本的选项。我强烈建议不要操纵模型本身。而是影响内容可见性,因为这是所需的行为。

于 2013-05-17T20:14:47.450 回答
0

你需要创建你的自定义IValueConverter和应该隐藏的值转换为空字符串

于 2013-05-17T20:16:06.897 回答