如何在某个索引处隐藏Datagrid行?

时间:2017-06-13 16:14:39

标签: c# wpf datagrid

我有一个DataGrid,并希望根据它们的行索引隐藏DataGrid中的某些行。我的意思是,如果我有一个包含行的DataGrid:

Mike  //Index 0
Steve //Index 1
Smith //Index 2
Greg  //Index 3
Jake  //Index 4

我希望隐藏所有以S开头的名字,有没有办法做类似

的事情
dataGrid1.row[1].Hide; 
dataGrid1.row[2].Hide; 

或类似

dataGrid1.row[1].Visibility = Visibility.Collapsed;
dataGrid1.row[2].Visibility = Visibility.Collapsed;

我不想在我的XAML中真正改变任何东西我想严格地能够在我的WPF代码中隐藏一行。

我已经看到了一些非常长的多种方法,但有没有办法做到这一点,类似于

dataGrid1.Columns[1].Visibility = Visibility.Collapsed;

您可以轻松隐藏列?

谢谢,iato

编辑:我在寻找的是对潜在重复问题的补充。

            var row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
            row.Visibility = Visibility.Collapsed;

是我的最终解决方案:)

1 个答案:

答案 0 :(得分:0)

数据将网格绑定到ViewModel中的集合。在数据模板中,使用绑定来获取最外层元素的可见性,并使用转换器将集合中的名称字段转换为可见性。

<DataTemplate>
    <Grid Visibility={Binding Name, Converter={{StaticResource NameToVisibilityConverter}} >
    ...
    </Grid>
</DataTemplate>

在转换器中 - 例如:

Convert() { return name[0] == 'S' ? Visibility.Hidden : Visibility.Visible; }