WPF拖动滚动不';我不能正常工作

WPF拖动滚动不';我不能正常工作,wpf,drag-and-drop,scroll,itemscontrol,Wpf,Drag And Drop,Scroll,Itemscontrol,我想在我的应用程序中实现一个拖动到滚动的功能,但途中遇到了一些问题。有人能帮我吗? 我有一个ScrollViewer,其中有一个ItemsControl,在ItemsTemplate中有一个UserControl。我想在ItemsControl中拖动该UserControl。当我拖动到ItemsControl的边界时,我希望ScrollViewer向下滚动 protected override void OnPreviewMouseMove(System.Windows.Input.MouseE

我想在我的应用程序中实现一个拖动到滚动的功能,但途中遇到了一些问题。有人能帮我吗? 我有一个ScrollViewer,其中有一个ItemsControl,在ItemsTemplate中有一个UserControl。我想在ItemsControl中拖动该UserControl。当我拖动到ItemsControl的边界时,我希望ScrollViewer向下滚动

protected override void OnPreviewMouseMove(System.Windows.Input.MouseEventArgs e)
{
    if (this.IsMouseCaptured)
    {
        // Get the new mouse position. 
        Point mouseDragCurrentPoint = e.GetPosition(this);

        if (Math.Abs(mouseDragCurrentPoint.Y - this.ActualHeight) <= 50)
        {
            this._scrollStartOffset.Y += 5;
            _containingScrollViewer.ScrollToVerticalOffset(this._scrollStartOffset.Y);
        }
        if (mouseDragCurrentPoint.Y <= 50)
        {
            this._scrollStartOffset.Y -= 5;
            _containingScrollViewer.ScrollToVerticalOffset(this._scrollStartOffset.Y);
        }
    }
    base.OnPreviewMouseMove(e);
}
受保护的覆盖void OnPreviewMouseMove(System.Windows.Input.MouseEventArgs e)
{
如果(此.ismouseCapture)
{
//获取新的鼠标位置。
点mouseDragCurrentPoint=e.GetPosition(此);

如果(Math.Abs(mouseDragCurrentPoint.Y-this.ActualHeight)在使用DragDrop.DoDragDrop()时,我使用一个Sub来处理Me.DragOver事件(在VB中),因此看起来如下所示。请注意,我的控件有一个包装在ScrollViewer中的列表框

Private Sub ListBox_Items_DragOver(ByVal sender As System.Object, ByVal e As System.Windows.DragEventArgs) Handles Me.DragOver
        Dim currentMousePoint As Point = e.GetPosition(_containtingScrollViewer)
        If Math.Abs(currentMousePoint.Y - _containtingScrollViewer.ActualHeight) <= 50 Then
            _containtingScrollViewer.ScrollToVerticalOffset(currentMousePoint.Y + 5)
        End If
        If currentMousePoint.Y <= 50 Then
            _containtingScrollViewer.ScrollToVerticalOffset(currentMousePoint.Y - 5)
        End If
End Sub
Private Sub ListBox\u Items\u DragOver(ByVal sender作为System.Object,ByVal e作为System.Windows.DragEventArgs)处理Me.DragOver
Dim currentMousePoint As Point=e.GetPosition(_containingScrollViewer)
If Math.Abs(currentMousePoint.Y-_包含ScrollViewer.ActualHeight)