如何获取 DataGrid 中的行列表?不是绑定的项目,而是
DataGridRows
列表。
我需要控制这些行的可见性,并且只能将其控制为 aDataGridRow
而不是数据对象。
谢谢!
如何获取 DataGrid 中的行列表?不是绑定的项目,而是
DataGridRows
列表。
我需要控制这些行的可见性,并且只能将其控制为 aDataGridRow
而不是数据对象。
谢谢!
您可以使用ItemContainerGenerator获取该行。这应该工作 -
for (int i = 0; i < dataGrid.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator
.ContainerFromIndex(i);
}
我建议为它定义一个样式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>