2011-10-07 87 views
1

我有2个列表框,我将项目从一个拖动到另一个。 问题是当滚动在列表框中可见时,如果我单击滚动以上/下移动,它将再次开始拖动。 有没有什么办法可以检测鼠标在滚动区域上方,这样我就可以阻止它启动拖动操作?如何检测当鼠标滚动在wpf

以下是代码:

Private Sub lstbox_PreviewMouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) 'Handles lstFieldsAvailable.PreviewMouseLeftButtonDown 
    _mouseDownPos = e.GetPosition(Nothing) 
    _isMouseDown = True 
    _mouseDownSource = sender 
End Sub 

Private Sub lstbox_PreviewMouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) 'Handles lstFieldsAvailable.PreviewMouseMove 
    Dim mousePos As Point = e.GetPosition(Nothing) 
    Dim diff As Vector = _mouseDownPos - mousePos 
    Dim lstbox As ListBox = CType(sender, ListBox) 

    If _isMouseDown And e.LeftButton = MouseButtonState.Pressed And lstbox.SelectedItems.Count > 0 And _ 
     lstbox.IsMouseOver And _ 
     (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance Or _ 
     Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance) Then 

     'get the selected items 
     Dim dragData As New DragDataStruct(lstbox) 
     For Each item As String In lstbox.SelectedItems 
      dragData.Items.Add(item) 
     Next 

     DragDrop.DoDragDrop(lstbox, dragData, DragDropEffects.Move) 

    End If 
End Sub 

回答

0

你真的要设置列表框作为拖动源...

广东话您使用ListBoxItem的作为拖动源?如果你这样做,那么ListBoxItem会自动排除它们的可拖动区域中的滚动条。

+0

当然,我该如何指定它? – user983923