获取datagrid行

时间:2012-10-06 17:52:25

标签: wpf datagrid visibility datagridrowheader

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

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

谢谢!

2 个答案:

答案 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>