我使用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);
是否有一个简单的方法来做到这一点?目前它只是像正常的滚动文本框一样行事,既不会超出正常范围,也不会缓慢回退。
见http://aniscrollviewer.codeplex.com/ - 我没有检查的代码了,但它说,它扩展了标准'ScrollViewer'更新从动画更新位置。 – ChrisF 2012-04-28 11:33:25
谢谢@ChrisF,但是这个例子只是平滑的滚动,并没有给出任何类型的“touch over drag”交互,也没有在其正常范围内平滑地反弹: – kvanberendonck 2012-04-29 03:01:01
啊 - 你不能使用不同的缓动功能吗? – ChrisF 2012-04-29 10:47:19