かなり複雑な UI があり、いくつかの問題が発生しています。
私はListBox
DataItems のセットを含む を持っています。DataTemplate
各項目の はですExpander
。ヘッダーはテキストで、の内容Expander
はListBox
. にListBox
は SubDataItems が含まれています。The DataTemplate
各 SubDataItem はExpander
です。
問題を再現する簡略化された XAML を次に示します。
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Header}">
<ListBox ItemsSource="{Binding SubItems}">
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding SubHeader}">
<Grid Height="40">
<TextBlock Text="{Binding SubText}" />
</Grid>
</Expander>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
レイアウトの作り方に問題があります。Expander
SubDataItem に対応するものが展開されている場合、ListBoxItem
これを含むListBox
(Expander.Content
親のDataTemplate
) はより多くのスペースを正しく要求します。したがって、すべての SubDataItems を展開して、データを正しく表示できます。ただし、折りたたむと、以前に展開するように要求したスペースは、によって再利用されるのではなく、空白のままになりListBoxItem
ます。
これは問題です。10 個の SubDataItems があり、それらすべてを同時に展開してから折りたたむと、かなりの量の空白が私の不動産を無駄にするためです。
ListBoxItem
WPF を強制的に正しい状態にサイズ変更するにはどうすればよいですか?