/// <summary> /// Finds the drag container that is the WPF element /// that holds the DataObject that will be dragged. /// </summary> /// <param name="originalSource"> /// The original source where the /// drag operation started. /// </param> /// <returns> /// The element that holds the DataObject, /// or null if none can be found. /// </returns> static DependencyObject FindDragContainer(DependencyObject originalSource) { var element = originalSource.FindParent <DependencyObject>(t => { return(DragDropManager.GetDataObject(t) != null); }); return(element); }
static void StartDrag(DependencyObject d, MouseEventArgs e) { var sourceItem = DragDropManager.FindDragContainer(( DependencyObject )e.OriginalSource); DragDropManager.SetIsDragging(d, true); var obj = DragDropManager.GetDataObject(sourceItem); var objType = DragDropManager.GetDataObjectType(sourceItem); DataObject data = null; if (String.IsNullOrEmpty(objType)) { data = new DataObject(obj.GetType(), obj); } else { data = new DataObject(objType, obj); } var de = DragDrop.DoDragDrop(d, data, DragDropEffects.Move); DragDropManager.SetIsDragging(d, false); }