这是对此的后续问题,已得到回答。
使用代码:
<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
您可以创建一个列表,其中项目ListBox
从左到右填充 in 列,并且特定列中的最后一个项目永远不会被截断(这意味着如果项目太高以适应,它会移动到下一列的顶部)。我现在如何动态调整'适合'它Width
的ListBox
项目并水平获得相同的行为。所以假设如下:
如果在给定的情况下Height
,只需要一个Column
来适应所有项目Width
,那么ListBox
应该是项目的大小Width
。
或者,在给定的Height
情况下,需要四个Column
s,它的大小需要是Width
项目的四倍。
最后,假设在给定的Height
情况下,s 需要Column
超过 s 的最大允许Width
值 ListBox
,它需要计算它应该有多宽,以便Column
s 中无法容纳的项目不会被截断,但只是不显示直到用户向右滚动。
谢谢你的帮助!!
编辑:
我认为表达上述内容的一种更简单的方法是我正在寻找一种方法来避免“剪切”列表中的项目。我想创建一个在网格中显示项目的列表,但您不必滚动,因为某些项目被部分覆盖,并且需要您向右或向左滚动以查看该项目的其余部分(尽管列表只能这么宽或这么高,如果有足够的项目你仍然需要滚动查看所有项目,你看到的任何项目都应该完全显示)。另外我只关心列表的初始绘制。它不必“捕捉”项目以始终适合,但它应该能够滚动,以便它用它显示的项目完全填充可用空间。
在我看来,这样做的关键是在运行时确定列表项的大小以及列表框中内容容器的大小,然后您可以在列表最初出现之前对其进行调整以一次完全适应这么多项目画?
谢谢!