【问题标题】:How to hide a complete DataGrid row?如何隐藏完整的 DataGrid 行?
【发布时间】:2017-12-11 08:54:56
【问题描述】:

我有一个 DataGrid,我可以从中添加和删除项目。这是我目前拥有的代码:

  <DataGrid x:Name="ItemsToDo">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Info>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <DataTemplate.Triggers>
                            <DataTrigger Binding="{Binding IsDone}" Value="True">
                                <Setter Property="Visibility" Value="Collapsed"/>
                            </DataTrigger>
                        </DataTemplate.Triggers>
                        <TextBlock Text="{Binding Description}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="Deadline">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <DataTemplate.Triggers>
                            <DataTrigger Binding="{Binding IsDone}" Value="True">
                                <Setter Property="Visibility" Value="Collapsed"/>
                            </DataTrigger>
                        </DataTemplate.Triggers>
                        <TextBlock Text="{Binding InputDeadline}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>

但是当一行的两列都设置为折叠时,该行不会消失,但它看起来像这样: 条目 2 并没有完全消失

如何在不使用视图模型的情况下删除该行?还有比能见度更好的属性吗?

【问题讨论】:

    标签: c# wpf visual-studio xaml datagrid


    【解决方案1】:

    您应该从单元格模板中删除DataTriggers,并将可见性触发器应用于整行,而不是单个单元格。

    例如:

    <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
        <DataGrid.RowStyle>
            <Style TargetType="DataGridRow">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsDone}" Value="True">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.RowStyle>
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Info">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Description}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="Deadline">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding InputDeadline}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>
    

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 1970-01-01
      • 2015-08-18
      • 2011-04-24
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2021-11-16
      相关资源
      最近更新 更多