我在我的 Windows 商店应用程序中使用 scrollviewer,但在调用 SetHorizontalOffset 函数后,有时 scrollviewer 不会改变水平滚动。垂直滚动也是如此。有人知道如何使用它吗?可能是滚动查看器滚动仅用于偏移量的可见性(我的意思是,如果它看到用户可以看到偏移量,它根本不会滚动)
问问题
569 次
1 回答
0
看起来 ScrollViewer 的偏移量滞后一帧。
如果下面的代码每帧运行一次,diffPrevDesiredActual 始终为0。也就是说,提供的值ChangeView
不会立即生效。
...
var scrollPosition = /*some new value*/;
MyScrollViewer.ChangeView(null, scrollPosition, null, true);
var current = MyScrollViewer.VerticalOffset;
var diffDesiredActual = scrollPosition - current;
var diffPrevDesiredActual = previous - current;
previous = scrollPosition;
...
private double previous;
如果您更改滚动偏移量时屏幕上没有任何动画,则 ScrollViewer 可能不会显示新值,直到某些东西触发了新帧的绘制。要验证这个假设,请尝试添加无限动画(例如 ProgressRing)以确保不断绘制帧。
于 2013-11-06T20:43:28.830 回答