部分垂直滚动

gml*_*ojr 2 c# xaml listbox

我有一个ListBox包含两列的列 - 第一列包含一个Toggle Button,第二列包含一个Expander包含多个控件的列.如果expander折叠,整体滚动ListBox工作正常.但是,如果Expander打开并且展开器包含大量项目,ListBox则将滚动整个行大小,通常不显示expander列表的一部分.

这类似于在列表框中放置一个大于列表框可视区域的图像.在这种情况下,如果单击滚动条,则需要"向下"移动图像,而不会在一次单击时滚动屏幕.

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

Bri*_*n S 6

您是否尝试通过设置ScrollViewer.CanContentScroll为false 来启用平滑滚动?这是控制是否ScrollViewer一次滚动一个项目,或者是否可以顺利滚动部分项目.

"的ScrollViewer目前允许两种滚动模式:平滑像素的逐像素滚动(CanContentScroll =假)或离散项逐项滚动(CanContentScroll =真)当前WPF仅由项目滚动时支持UI虚拟基于像素的滚动是.也称为"物理滚动"和基于项目的滚动也称为"逻辑滚动"." (从这个答案).

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