我创建了一个 ListBox 来显示组中的项目,当这些组不再适合 ListBox 面板的高度时,它们会从右到左包裹。因此,这些组在列表框中将与此类似,其中每个组的高度是任意的(例如,组 1 是组 2 的两倍):
[ 1 ][ 3 ][ 5 ]
[ ][ 4 ][ 6 ]
[ 2 ][ ]
以下 XAML 可以正常工作,因为它执行换行,并允许在项目从 ListBox 右侧运行时出现水平滚动条。
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.GroupStyle>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"
Height="{Binding Path=ActualHeight,
RelativeSource={RelativeSource
FindAncestor,
AncestorLevel=1,
AncestorType={x:Type ScrollContentPresenter}}}"/>
</ItemsPanelTemplate>
</ListBox.GroupStyle>
</ListBox>
当一组项目长于 WrapPanel 的高度时,会出现此问题。与允许垂直滚动条出现以查看截止项目组不同,该组中的项目被简单地剪裁。我假设这是 WrapPanel 中的 Height 绑定的副作用 - 滚动条认为它不必启用。
有没有办法启用滚动条,或者我没有看到的解决这个问题的其他方法?