DataGrid の行のリストを取得するにはどうすればよいですか? バインドされたアイテムではなく、
DataGridRows
リストです。
これらの行の可視性を制御する必要がありますがDataGridRow
、データ オブジェクトとしてではなく、としてのみ制御できます。
ありがとう!
DataGrid の行のリストを取得するにはどうすればよいですか? バインドされたアイテムではなく、
DataGridRows
リストです。
これらの行の可視性を制御する必要がありますがDataGridRow
、データ オブジェクトとしてではなく、としてのみ制御できます。
ありがとう!
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>