13

如何获取 DataGrid 中的行列表?不是绑定的项目,而是 DataGridRows列表。

我需要控制这些行的可见性,并且只能将其控制为 aDataGridRow而不是数据对象。

谢谢!

4

2 回答 2

33

您可以使用ItemContainerGenerator获取该行。这应该工作 -

for (int i = 0; i < dataGrid.Items.Count; i++)
{
    DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator
                                               .ContainerFromIndex(i);
}
于 2012-10-06T18:34:52.437 回答
1

我建议为它定义一个样式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>
于 2012-10-06T19:02:33.153 回答