private void FilterView_PreviewMouseMove(object sender, MouseEventArgs e) { // Get the current mouse position Point mousePos = e.GetPosition(null); Vector diff = startPoint - mousePos; if (e.LeftButton == MouseButtonState.Pressed && (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance || Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)) { // Get the dragged ListViewItem ListView listView = sender as ListView; ListViewItem listViewItem = WPFHelper.FindAnchestor <ListViewItem>((DependencyObject)e.OriginalSource); if (listViewItem == null) { return; } // Find the data behind the ListViewItem AssetItem item = (AssetItem)listView.ItemContainerGenerator. ItemFromContainer(listViewItem); // Initialize the drag & drop operation DataObject dragData = new DataObject("assetFormat", item); DragDrop.DoDragDrop(listViewItem, dragData, DragDropEffects.Move); } }