我有一个CanContentScroll为true的列表框,但其他为false的列表框。

我正在编写一种行为,需要从中提取scrollviewer并计算与设备无关的像素中的垂直滚动偏移量。

由于CanContentScroll可以为true或false,所以有时我得到逻辑项单位,而有时获得物理像素。

因此,在CanContentScroll为true的情况下,我需要计算像素值。

例如:当列表框滚动三个项目时,VerticalOffset将给出3。如何将这3转换为项目所使用的垂直像素(大小可能有所不同)?

谢谢

最佳答案

您必须有效设置CanContentScroll =“False”才能计算像素值。

要知道像素大小,您需要创建所有项目的容器并汇总所有容器的高度。为此,您需要首先生成所有容器。这将意味着您实际上失去了虚拟化,并有效地设置了CanContentScroll =“False”。在那种情况下,为什么要首先使用CanContentScroll =“True”?

尼古拉(Nikolay)的代码试图做的事情是自己做CanContentScroll =“False”的工作,而没有给您平滑的滚动效果。

更重要的是,如果您始终知道CanContentScroll =“true”,那么物理偏移量将解决您无法用逻辑偏移量解决的问题?

10-06 05:14