WPF ListView 简单的拖拽实现

首先设置ListView的AllowDrop=True;SelectionMode=Extended;并且ListView视图为GridVIew。

直接上源码:

private void listView1_MouseMove(object sender, MouseEventArgs e){ListView listview = sender as ListView;if (e.LeftButton == MouseButtonState.Pressed){System.Collections.IList list = listview.SelectedItems as System.Collections.IList;DataObject data = new DataObject(typeof(System.Collections.IList), list);if (list.Count > 0){DragDrop.DoDragDrop(listview, data, DragDropEffects.Move);}}}private void listView1_Drop(object sender, DragEventArgs e){if (e.Data.GetDataPresent(typeof(System.Collections.IList))){System.Collections.IList peopleList = e.Data.GetData(typeof(System.Collections.IList)) as System.Collections.IList;//index为放置时鼠标下元素项的索引int index = GetCurrentIndex(new GetPositionDelegate(e.GetPosition));if (index > -1){LogMessage Logmess = peopleList[0] as LogMessage;//拖动元素集合的第一个元素索引int OldFirstIndex = StreamHelper.List.IndexOf(Logmess);//下边那个循环要求数据源必须为ObservableCollection<T>类型,T为对象for (int i = 0; i < peopleList.Count; i++){StreamHelper.List.Move(OldFirstIndex, index);}listView1.SelectedItems.Clear();}}}private int GetCurrentIndex(GetPositionDelegate getPosition){int index = -1;for (int i = 0; i < listView1.Items.Count; ++i){ListViewItem item = GetListViewItem(i);if (item != null && this.IsMouseOverTarget(item, getPosition)){index = i;break;}}return index;}private bool IsMouseOverTarget(Visual target, GetPositionDelegate getPosition){Rect bounds = VisualTreeHelper.GetDescendantBounds(target);Point mousePos = getPosition((IInputElement)target);return bounds.Contains(mousePos);}delegate Point GetPositionDelegate(IInputElement element);ListViewItem GetListViewItem(int index){if (listView1.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)return null;return listView1.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem;}

其中StreamHelper.List是StreamHelper类里边有一个静态的ObservableCollection<LogMessage>集合名字为List;

LogMessage就是集合里边的T对象了;



,还要高声歌唱。那歌声,一定是响遏流云的,

WPF ListView 简单的拖拽实现

相关文章:

你感兴趣的文章:

标签云: