我有一个ListView,它与ListViewItems显式填充(无绑定)。 大多数项目需要可见,其他项目应保持折叠状态。所有物品都有相同的高度。
问题是,如果我有100个项目,前60个是可见的,而后40个是处于折叠状态,则滚动条的高度会基于所有100个项目都处于可见状态并且滚动条的高度变为比它应该的少。但是当我向下滚动到60时,它意识到其余的40处于折叠状态,因此增加了滚动条的高度,使其适合列表视图中的60个项目。
我最初认为可能是因为虚拟化。但我没有任何数据绑定到列表视图。我还尝试将项目的高度设置为0,需要处于折叠状态,这不会给我想要的结果。
我需要的是,如果有60个项目可见且40个已折叠,则滚动条的高度应仅基于列表视图中的60个项目,并且应保持不变。 有可能实现吗?
答案 0 :(得分:4)
我遇到了完全相同的问题,答案可以在这里找到:Listbox scrollbar thumb changes size when content is variable height
很快,在ListBox上添加ScrollViewer.CanContentScroll="False"
,无论折叠项目的数量如何,滚动条的高度都会保持不变。
顺便说一下,我知道这个问题已经差不多2年了,不过我想把它留待将来参考。
答案 1 :(得分:2)
我不确定是什么让你决定它不是虚拟化,因为它是必须的。尝试关闭虚拟化:
<ListView VirtualizingStackPanel.IsVirtualizing="False" ...