2012-04-28 59 views
5

我使用WPF ScrollViewer来托管一些控件。我真的很喜欢它在触摸设备上进行交互,当它拉得太远时,它会缓慢地恢复到原位。有没有简单的方法来使ScrollViewer“弹性”?

它不会有一个滚动条 - 我有手动鼠标滚动与点击并拖动使用此代码:

Point currentPoint = e.GetPosition(this); 

// Determine the new amount to scroll. 
Point delta = new Point(scrollStartPoint.X - currentPoint.X, scrollStartPoint.Y - currentPoint.Y); 

if (Math.Abs(delta.X) < PixelsToMoveToBeConsideredScroll && 
    Math.Abs(delta.Y) < PixelsToMoveToBeConsideredScroll) 
    return; 

scrollTarget.X = scrollStartOffset.X + delta.X; 
scrollTarget.Y = scrollStartOffset.Y + delta.Y; 

// Scroll to the new position. 
sv.ScrollToHorizontalOffset(scrollTarget.X); 
sv.ScrollToVerticalOffset(scrollTarget.Y); 

是否有一个简单的方法来做到这一点?目前它只是像正常的滚动文本框一样行事,既不会超出正常范围,也不会缓慢回退。

+0

见http://aniscrollviewer.codeplex.com/ - 我没有检查的代码了,但它说,它扩展了标准'ScrollViewer'更新从动画更新位置。 – ChrisF 2012-04-28 11:33:25

+0

谢谢@ChrisF,但是这个例子只是平滑的滚动,并没有给出任何类型的“touch over drag”交互,也没有在其正常范围内平滑地反弹: – kvanberendonck 2012-04-29 03:01:01

+0

啊 - 你不能使用不同的缓动功能吗? – ChrisF 2012-04-29 10:47:19

回答

相关问题