用途:在 WPF 应用中实现应用内及应用间的数据拖放传输,例如文件拖放区、列表重排等。
主要能力:
- 拖放源:通过 MouseDown 记录起点,MouseMove 中判断是否超过 SystemParameters.MinimumHorizontalDragDistance / MinimumVerticalDragDistance 阈值,再调用 DragDrop.DoDragDrop 启动拖拽。
- 多数据格式:用 DataObject 的 SetData 同时写入自定义类型、DataFormats.Text、DataFormats.Serializable 等,提升兼容性。
- 放置目标:在 XAML 中设置 AllowDrop="True" 并挂接 DragEnter、DragOver、DragLeave、Drop 事件;在 DragEnter/DragOver 中用 e.Data.GetDataPresent 校验格式并设置 e.Effects,Drop 中读取数据并处理。
- 文件拖放控件:示例 FileDropZone 通过依赖属性 AcceptedExtensions 过滤扩展名,暴露 FilesDropped 事件,并在 OnDragEnter/OnDragOver/OnDrop 中校验与过滤文件。
- 效果控制:DragDropEffects 包含 None、Copy、Move、Link、Scroll、All,可结合 Ctrl、Shift、Alt 等修饰键在 DragOver 中动态切换。
使用方式:在 XAML 中为放置区域设置 AllowDrop 并绑定拖放事件;拖放源在鼠标移动超过阈值后构造 DataObject 并调用 DragDrop.DoDragDrop(source, data, effects)。文件拖放区可按示例以 AcceptedExtensions=".jpg,.png,.gif" 与 FilesDropped 事件使用。
适用场景:文件拖放区、列表重排、跨应用数据传递等。
限制:资料未提供安装命令、依赖版本、平台要求、收费信息及性能数据;高级模式(视觉反馈、列表重排、自定义数据格式)需参见 ADVANCED.md,本次资料未展开。