Xaml ScrollViewer和SetHorizontalOffset
我在windows应用商店应用程序中使用scrollviewer,但在调用SetHorizontalOffset函数后,scrollviewer有时不会更改水平滚动。垂直滚动也是如此。有人知道如何使用它吗?可能是scrollviewer scroll仅用于显示偏移量(我的意思是,如果用户看到偏移量,则其根本不会滚动)它显示scrollviewer的偏移量滞后一帧 如果以下代码每帧运行一次,diffPrevDesiredActual始终为0。也就是说,Xaml ScrollViewer和SetHorizontalOffset,xaml,microsoft-metro,windows-store-apps,scrollviewer,Xaml,Microsoft Metro,Windows Store Apps,Scrollviewer,我在windows应用商店应用程序中使用scrollviewer,但在调用SetHorizontalOffset函数后,scrollviewer有时不会更改水平滚动。垂直滚动也是如此。有人知道如何使用它吗?可能是scrollviewer scroll仅用于显示偏移量(我的意思是,如果用户看到偏移量,则其根本不会滚动)它显示scrollviewer的偏移量滞后一帧 如果以下代码每帧运行一次,diffPrevDesiredActual始终为0。也就是说,ChangeView提供的值不会立即生效
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)以确保不断绘制帧。您确定正确计算了偏移量吗?确保偏移量小于
可滚动宽度/高度
。如果您想滚动到内容末尾之外,则需要在内容末尾添加一些缓冲区空间。