private void List_MouseMove(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 = FindAnchestor <ListViewItem>((DependencyObject)e.OriginalSource); if (listViewItem != null) { // Find the data behind the ListViewItem HlpTable row = (HlpTable)listView.ItemContainerGenerator. ItemFromContainer(listViewItem); // Initialize the drag & drop operation DataObject dragData = new DataObject("myFormat", row); DragDrop.DoDragDrop(listViewItem, dragData, DragDropEffects.Move); } } }
private void DropList_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("myFormat")) { HlpTable contact = e.Data.GetData("myFormat") as HlpTable; ListView listView = sender as ListView; ListViewItem listViewItem = FindAnchestor <ListViewItem>((DependencyObject)e.OriginalSource); // Find the data behind the ListViewItem HlpTable row = (HlpTable)listView.ItemContainerGenerator. ItemFromContainer(listViewItem); row.Mapping = contact.Mapping; listView.ItemsSource = sh.GetSelectTable[1].ColumnsList; ICollectionView view = CollectionViewSource.GetDefaultView(sh.GetSelectTable[1].ColumnsList); view.Refresh(); } }