如何获取DataGrid中的行列表?不是绑定的项目,而是
DataGridRows
列表。
我需要控制这些行的可见性,并且只能将其控制为DataGridRow
而不是数据对象。
谢谢!
答案 0 :(得分:25)
您可以使用ItemContainerGenerator获取该行。这应该有效 -
for (int i = 0; i < dataGrid.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator
.ContainerFromIndex(i);
}
答案 1 :(得分:0)
我建议为DataGridRow
定义一个样式,该样式的可见性是否应该显示。正如我在@ RV1987的回答中提到的那样,仅仅遍历行是不够的。
<DataGrid>
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding ...}" />
</Style>
</DataGrid.Resources>
</DataGrid>
修改强>
您绑定的内容取决于您保存是否应显示该行的信息。例如,如果绑定集合中的每个数据对象都具有bool ShouldBeDisplayed
属性,那么您将具有以下内容:
<DataGrid>
<DataGrid.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding Path=ShouldBeDisplayed, Converter={StaticResource booleanToVisibilityConverter}}" />
</Style>
</DataGrid.Resources>
</DataGrid>