其实代码蛮简单的,在元素的DragOver事件中加入如下代码:
Point svPoint = e.GetPosition(sv); if (sv.ActualHeight-svPoint.Y <= 20) { sv.ScrollToVerticalOffset(this.sv.VerticalOffset + 5); } if (Math.Abs(svPoint.Y) <= 20) { sv.ScrollToVerticalOffset(sv.VerticalOffset - 5); }
其中,sv即Scrollviewer,使用的主要就是Scrollviewer的ScrollToVerticalOffset方法,动态修改Scrollviewer的滚动偏移量。另外if中的值可以根据自己需要进行适当调整,另外第二个if中的绝对值处理其实是可有可无的。