我使用WinUI 3中的水平ListView来显示一种具有任意列高的图表:
问题是,当没有足够的空间和滚动条出现时,布局就会崩溃:
这很奇怪,因为item contaner的对齐设置为Stretch,所以我希望它们应该填充项目面板提供的所有垂直空间:
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" VerticalAlignment="Stretch" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<!--<Setter Property="BorderThickness" Value="1" />
<Setter Property="BorderBrush" Value="Red" />-->
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Bottom" />
<Setter Property="MinWidth" Value="0" />
<Setter Property="Padding" Value="0" />
</Style>
</ListView.ItemContainerStyle>
如果我取消注解这两行以查看容器边框并向下滚动,我会看到下面的图片:
有什么想法吗?先谢谢你了。
1条答案
按热度按时间bksxznpy1#
如果您尝试通过它们的样式拉伸
ListViewItem
,而它们没有,则可能表明它们受到其父对象(在本例中为VirtualizingStackPanel
)的约束。您可以尝试将常规
StackPanel
的面板更改为Orientation="Horizontal"
(不是永久性的,只是为了比较行为),看看会发生什么。可能需要在VirtualizingStackPanel
上设置一些属性以实现您想要的功能。也可能是你陷入了未定义的行为领域。当你考虑它的时候,布局是有问题的,当它超出了可用的空间。面板可能无法拉伸其项目,因为它不知道垂直方向的大小,因为该大小由正在布局的子项的最大高度决定。我们处于布局循环中,可能根本不支持此用例。