如何获得所放置对象的类型?如何将其添加到特定的结构/列表中?
假设您控制拖动的开始(而不是从其他应用程序拖动),则取决于类型。只需使源代码和目标代码匹配即可。在拖动中(通常是MouseMove或MouseDown处理程序):
var dragData = new DataObject(typeof(JobViewModel), job);
DragDrop.DoDragDrop(element, dragData, DragDropEffects.Move);
开始拖动。然后在下拉列表中(听起来您已经走了这么远):
var dataObj = e.Data as DataObject;
var dragged = dataObj.GetData(typeof(JobViewModel)) as JobViewModel;
您也可以使用字符串代替类型。
只需将控件的AllowDrop属性设置为true。并在其上实现Drop事件;您可以在事件参数中访问放置信息。
对于GetData部分,您可以使用它来获取特定的数据类型。例如,这是文件删除:
string[] fileNames = (string[])e.Data.GetData(DataFormats.FileDrop, true);
谢谢,