2011-10-07 88 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