我正在尝试使用VerticalOffset值以每100ms刷新一次计算ScrollViewer的滚动速度。问题是VerticalOffset值不会实时更新。所以每一个值都与最后一个值相同。 我甚至尝试过scrollviewer.UpdateLayout();或者this.UpdateLayout();但仍然没有变化。
以下是代码:
void Timer_Tick(object sender, EventArgs e)
{
Dispatcher.BeginInvoke(() =>
{
this.UpdateLayout();
double current_position = scrollviewer.VerticalOffset;
speed = (current_position - last_position);
last_position = current_position;
last_speed = speed;
Speed_text.Text = "Speed : " + speed.ToString();
});
}
我想获得精确的VerticalOffset。即使刷新率是每10毫秒一次。
更新
所以我尝试用viewportcontrol替换scrollviewer,因为longlistselector也使用它。结果很好。我从viewportcontrol.ViewPort.Top获得了实时值。
答案 0 :(得分:0)
我用ViewPortControl替换了ScrollViewer。现在,而不是在scrollviewer中的VerticalOffset,我可以使用ViewPortControl.ViewPort.Top
我必须确保ViewPortControl中的Bounds是正确的