13

DataGrid の行のリストを取得するにはどうすればよいですか? バインドされたアイテムではなく、 DataGridRowsリストです。

これらの行の可視性を制御する必要がありますがDataGridRow、データ オブジェクトとしてではなく、としてのみ制御できます。

ありがとう!

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 に答える