如何精确计算ScrollViewer的滚动速度?

时间:2014-11-06 16:07:32

标签: windows-phone-8 scrollviewer

我正在尝试使用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获得了实时值。

1 个答案:

答案 0 :(得分:0)

我用ViewPortControl替换了ScrollViewer。现在,而不是在scrollviewer中的VerticalOffset,我可以使用ViewPortControl.ViewPort.Top

我必须确保ViewPortControl中的Bounds是正确的