我们有一个相当复杂的 UI,它给我们带来了一些问题。
我有一个ListBox
包含一组数据项。每个DataTemplate
项目的Expander
. 标题是文本,内容Expander
是ListBox
. ListBox
包含子数据项。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
包含 this ListBox
(Expander.Content
在 parent 中DataTemplate
)正确地请求更多空间。所以我可以展开所有 SubDataItems 并正确查看我的数据。但是,当我折叠时,我之前要求扩展的空间仍然是空白,而不是被ListBoxItem
.
这是一个问题,因为如果我说 10 个 SubDataItems 并且碰巧同时扩展所有它们然后崩溃,那么就会有大量空白空间浪费我的房地产。
如何强制 WPF 将大小调整ListBoxItem
为正确的状态?