部分垂直滚动

时间:2013-03-01 16:33:48

标签: c# xaml listbox

我的ListBox包含两列 - 第一列包含切换按钮,第二列包含Expander,其中包含多个控件。如果expander已折叠,则ListBox的整体滚动效果正常。但是,如果Expander已打开且展开器包含大量项目,则ListBox将滚动整个行大小,通常不会显示expander列表的一部分。

这类似于在列表框中放置一个大于列表框可视区域的图像。在这种情况下,如果单击滚动条,则需要“逐步”向下移动图像,而无需单击一下滚动屏幕。

是否有ListBox的设置允许部分滚动,如我所述?我的listBox是在xaml中定义的,控件是通过C#代码添加的。

1 个答案:

答案 0 :(得分:6)

您是否尝试通过将ScrollViewer.CanContentScroll设置为false来启用平滑滚动?这可以控制ScrollViewer是一次滚动一个项目,还是平滑地显示部分项目。

  

“ScrollViewer目前允许两种滚动模式:平滑   逐像素滚动(CanContentScroll = false)或离散   逐项滚动(CanContentScroll = true)。目前WPF   仅在按项目滚动时支持UI虚拟化。基于像素的   滚动也称为“物理滚动”和基于项目的滚动   也称为“逻辑滚动”。“   (来自this answer)。

如果您的ListBox中有很多项目,这可能不是理想的解决方案,因为它会关闭虚拟化,因此可能会对性能产生影响。查看this answer以了解有关平滑滚动和虚拟化的更多信息。 (一个答案表明允许平滑滚动和虚拟化的黑客攻击)。