首先设置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 > )
{
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 > -)
{
LogMessage Logmess = peopleList[] as LogMessage;
//拖动元素集合的第一个元素索引
int OldFirstIndex = StreamHelper.List.IndexOf(Logmess);
//下边那个循环要求数据源必须为ObservableCollection<T>类型,T为对象
for (int i = ; i < peopleList.Count; i++)
{
StreamHelper.List.Move(OldFirstIndex, index);
}
listView1.SelectedItems.Clear();
}
}
} private int GetCurrentIndex(GetPositionDelegate getPosition)
{
int index = -;
for (int i = ; 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对象了;

最新文章

  1. Visual Studio Emulator for Android 初体验
  2. 【IOS】从android角度来实现(理解)IOS的UITableView
  3. 在Linux终端命令行下播放音乐的命令(Ubuntu)
  4. python-appium练习编写脚本时遇到问题
  5. maven依赖缺少oracle驱动包
  6. UVA 12113 Overlapping Squares
  7. php ddos 安全处理代码
  8. Es6 类的关键 super、static、constructor、new.target
  9. 决策树系列(五)——CART
  10. poj 2566&quot;Bound Found&quot;(尺取法)
  11. CSS如何进行图文并茂布局怎么破
  12. 转:centos7/rhel7安装较高版本ruby2.2/2.3/2.4+
  13. spring 自己定义标签 学习二
  14. java 1.8新特性(二) 关于 function 接口的使用
  15. libextobjc 实现的 defer
  16. [笔记] Delphi 10.2.1 Tokyo 安装使用笔记
  17. (1.3)DML增强功能-Apply、pivot、unpivot、for xml path行列转换
  18. InstallShield的工程类型的选择
  19. 使用catch做单元测试简介
  20. Source Insight 4.0 文件类型、编码格式、tab转空格、tab键自动补全设置。。。

热门文章

  1. 快速SQL调优/优化(SQL TUNING)——1分钟搞定超慢SQL
  2. Java——File类成员方法
  3. (C/C++学习笔记) 十三. 引用
  4. 1.5 C++ new和delete操作符
  5. 配置javaBean
  6. 如何修改magento产品详细页面的栏目
  7. Size类型如何调用和定义
  8. Mac下百度网盘破解
  9. MAC 设置环境变量path的常用方法
  10. Python开源应用系统