我有一个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;
是我的最终解决方案:)
答案 0 :(得分:0)
数据将网格绑定到ViewModel中的集合。在数据模板中,使用绑定来获取最外层元素的可见性,并使用转换器将集合中的名称字段转换为可见性。
<DataTemplate>
<Grid Visibility={Binding Name, Converter={{StaticResource NameToVisibilityConverter}} >
...
</Grid>
</DataTemplate>
在转换器中 - 例如:
Convert() { return name[0] == 'S' ? Visibility.Hidden : Visibility.Visible; }