从ListView拖动项目

时间:2013-11-18 08:22:14

标签: .net wpf listview drag-and-drop

如何从WPF ListView启动拖放操作?

我没有找到如何从事件处理程序捕获待拖动的ListViewItem。 我试图订阅上面的隧道事件:

Private Sub MyListView_PreviewMouseLeftButtonDown(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs)
    Dim lstview As ListView = CType(sender, ListView)
    If lstview.SelectedItem IsNot Nothing Then
        DragDrop.DoDragDrop(lstview, lstview.SelectedItem, DragDropEffects.Move)
    End If
End Sub 

...但正如预期的那样,在此处理此事件时尚未设置ListViewItem,并且始终没有。

处理ListView的MouseDown将无法工作,因为单击ListViewItem时不会触发。

如何抓住要拖动的ListView项? 它应该支持拖动多个ListViewItem。

1 个答案:

答案 0 :(得分:1)

您可以从SelectionChanged事件处理程序

开始拖动操作
Private Sub ListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)

    Dim selectedItems As List(Of YourDataType) = 
        e.AddedItems.OfType(Of YourDataType)().ToList()
    DragDrop.DoDragDrop( ... )

End Sub