0

我在我的 Windows 商店应用程序中使用 scrollviewer,但在调用 SetHorizo​​ntalOffset 函数后,有时 scrollviewer 不会改变水平滚动。垂直滚动也是如此。有人知道如何使用它吗?可能是滚动查看器滚动仅用于偏移量的可见性(我的意思是,如果它看到用户可以看到偏移量,它根本不会滚动)

4

1 回答 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 回答