renmin  
常常被别人以为是高手

总体的实现并不复杂。msdn中有专题介绍,还有不少例子。

我把拖拽分为三类:

1. 在同一WPF窗口内拖拽,应用场景有:

a) 拖拽改变控件大小

b) 移动控件

c) 在不同容器中移动控件(比如在资源管理其中移动文件)

How can I drag and drop items between data bound ItemsControls-

2. 在WPF窗口和其他程序中拖拽,应用场景:

a) 打开文件

b) 保存文件(需外部程序支持)

3. 在同一WPF程序的不同窗口中拖拽,应用场景:

没想出什么太典型的。

第1,2类在MSDN中都有例子。Drag and Drop Samples 

第3类也不是很复杂。

主要都是通过设置控件

AllowDrop属性,

DragEnter,DragOver,DragLeave和Drop事件实现的。还有GiveFeedback事件,不过比较少用。

不过目前有一个难点:如果在拖拽的时候显示被拖拽对象的缩略图(Thumbnail)

image

比如上图的样式。但是在MSDN中例子里你只能看到类似下面的图标。

image

现在正在研究这个问题。

对于第3类问题比较好办。因为完全都是自己的程序,可以创建一个小窗口跟随鼠标移动,作为缩略图。

难办的是1,2类,都需要跟外部程序,比如资源管理器,交互。

在Google上搜索 wpf drag-and-drop thumbnail。(了解一些术语的英文名称,因为一般中文很难找到很专业的技术文档)。

找到了下面一个牛人系列文章。

Shell Style Drag and Drop in .NET (WPF and WinForms)

明天用到程序中试试看。

posted on 2009-05-04 19:28    阅读(2853)  评论(0编辑  收藏  举报