想实现这样一个常用功能:在ListBox的一个Item上点住左键,然后拖拽到另外一个控件(如ListView中),松开左键,数据已经拖拽过来。

步骤如下:

1. 设置ListBox 的AllowDrop属性为True

2. 在ListBoxItem 的Style中设置EventSetter

<Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">

    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown"/>
</Style>

3. 实现ListBoxItem_PreviewMouseLeftButtonDown

private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e)
{
ListBoxItem item = (sender as Control) as ListBoxItem;
if (item != null )
{
DataObject dataObject = new DataObject(item.DataContext);
DragDrop.DoDragDrop(item, dataObject, DragDropEffects.Copy);//启动拖拽
}
}

4. 在目的控件也将AllowDrop的属性设为True,然后实现目的控件的Drop Event

private void ***Control_Drop(object sender, DragEventArgs e)
{
// 注册Drop事件用来接收数据。
IDataObject data = new DataObject();
data = e.Data;
object obj = data.GetData(typeof(YourDataContext)); if (obj != null)
{
Do your job
}
}

在不同控件中拖拽数据就这样实现了,很简单吧。

WPF 实现控件间拖拽内容的更多相关文章

  1. ToolStrip控件左右拖拽移动效果实现

    1.主窗体下部添加一个Panel乘放ToolStrip控件以实现ToolStrip在窗体下部定位.2.当ToolStrip控件中子控件超出屏幕时,拖动控件可以实现滑动效果.拖动到控件边缘距窗体边缘1/ ...

  2. WPF Popup 控件导致被遮挡内容不刷新的原因

    WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...

  3. [WPF]获取控件间的相对位置

    原文:[WPF]获取控件间的相对位置 [WPF]获取控件间的相对位置                             周银辉 我们知道WPF有着比较灵活的布局方式,关于某个控件的坐标,Canv ...

  4. PyQt5控件支持拖拽方法

    让控件支持拖拽动作A.setDragEnable(True) 设置A可以拖动B.setAcceptDrops(True) 设置B可以接受拖动B需要满足两个事件1.dragEnterEvent 将A拖到 ...

  5. C#开发PACS医学影像处理系统(九):序列控件与拖拽

    1.先看结构: 创建WPF用户控件:YourTab 创建WPF用户控件:YourItem 创建选项卡时循环添加item,并设置序列缩略图到控件和异步下载的进度条, 1个病人1个或多个Study检查,1 ...

  6. 【C#/WPF】UI控件的拖拽/拉伸

    需求①:控件拖拽——按住鼠标,可自由拖拽控件. 方法:目前看到的办法有两种. 使用ZoomableCanvas:http://www.cnblogs.com/gnielee/archive/2011/ ...

  7. 【Android】HorizontalScrollView内子控件横向拖拽

    前言 网上ListView上下拖动的例子有,效果也很好,但是项目要横着拖的,只要硬着头皮自己写(主要是没找到合适的),参考文章1修改而来,分享一下. 声明 欢迎转载,但请保留文章原始出处:)  博客园 ...

  8. 怎样在delphi中实现控件的拖拽

    下面这2种方法都能实现对控件和窗体的拖拽 方法1 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift ...

  9. winform上控件的拖拽小结

    这里罗列出几个相关的事件和属性,具体的实现介绍已有非常优秀的文章了,文章末尾我将会给出,大家可以去参考. 属性: AllowDrop: 目标控件必须设定为true,才能接受拖拽来的东西. 事件: It ...

随机推荐

  1. superslide2

    标签切换 / 书签切换 / 默认效果 http://www.superslide2.com/demo.html 4个Web前端经典实用值得学习收藏的地图实现模板~ http://www.iteye.c ...

  2. centos虚拟机NAT静态IP设置

    宿主机为Centos6.3 64位,三台虚拟机为为Centos6.3 64位.虚拟机的网络连接方式为默认的NAT方式.虚拟机默认为DHCP方式动态获取IP.为了在三台虚拟机上搭建hadoop,需要将这 ...

  3. [Android] PorterDuff使用实例----实现新浪微博图片下载效果

    先上效果图,如demo_sinaweibo.gif 由效果图,下半部分是简单的效果叠加,上半部分是新浪微博加载图片显示进度的效果,显示进度的半透明区域只与根据背景图的非透明区域叠加,背景图的透明区域仍 ...

  4. OpenSSL之PKey的EVP封装

    在Openssl中,非对称加密涉及到两个密钥.一个为公开的密钥(公钥),一个为非公开的密钥.而OpenSSL中非对称加密算法有RSA.DSA.ECC,他们的原理不同,因此其密钥结构不同.下面我们列出我 ...

  5. Node.js 实现简单小说爬虫

    最近因为剧荒,老大追了爱奇艺的一部网剧,由丁墨的同名小说<美人为馅>改编,目前已经放出两季,虽然整部剧槽点满满,但是老大看得不亦乐乎,并且在看完第二季之后跟我要小说资源,直接要奔原著去看结 ...

  6. error BC31019 无法写入输出文件 未指定错误

    今天获取项目最后版本后,编译突然出现错误 error BC31019 无法写入输出文件 "xxx目录" 未指定错误 试着调整当前用户对这个文件的读写权限等各种方法,都未能解决该问题 ...

  7. 使用Teleport Pro离线下载网页所有内容

    在学习生活中,碰到网页中内容太多,如何讲其保存到本地,已方便随时查看呢? 使用Teleport Pro就可以解决问题:     首先下载Teleport Pro V1.54 汉化绿色版的,解压完之后 ...

  8. sql server代理中作业执行SSIS包失败

    RT,执行失败了,总是只提示一句“以xxxx用户身份执行失败”,很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssi ...

  9. 第1章 网络编程基础(4)——TCP/IP通信

    TCP协议利用网络层IP协议提供不可靠的通信服务,解决分组的重传和排序问题,为应用程序提供可靠的.端到端的.面向连接的基于字节流的服务. 对等TCP传输实体间的通信具有如下特征: 全双工 只支持两个端 ...

  10. 解决SurfaceView设置透明造成覆盖其他组件的替代方案

    之前在项目里面绘制摇杆圆盘使用SurfaceView来实现,同时设置SurfaceView透明,但是这样会造成SurfaceView的组件会覆盖其他的组件,一般情况没有关系,而不一般的情况就是有类似上 ...