internal static DataObject DoDragMoveImpl(IEnumerable <WorkflowViewElement> draggedViewElements, Point referencePoint) { List <ModelItem> draggedModelItems = new List <ModelItem>(); bool first = true; WorkflowViewElement viewElement = null; foreach (WorkflowViewElement view in draggedViewElements) { if (view != null) { if (first) { viewElement = view; first = false; } draggedModelItems.Add(view.ModelItem); view.IsHitTestVisible = false; } } DataObject dataObject = new DataObject(ModelItemsDataFormat, draggedModelItems); // For compatiblity if (viewElement != null) { dataObject.SetData(ModelItemDataFormat, viewElement.ModelItem); dataObject.SetData(CompositeViewFormat, GetCompositeView(viewElement)); } dataObject.SetData(DragAnchorPointFormat, referencePoint); if (viewElement != null) { DesignerView designerView = viewElement.Context.Services.GetService <DesignerView>(); ViewElementDragShadow dragShadow = new ViewElementDragShadow(designerView.scrollableContent, draggedViewElements, referencePoint, designerView.ZoomFactor); designerView.BeginDragShadowTracking(dragShadow); //whenever drag drop fails - ensure getting rid of drag shadow try { DragDrop.DoDragDrop(designerView, dataObject, DragDropEffects.Move | DragDropEffects.Copy | DragDropEffects.Scroll | DragDropEffects.Link); } catch { //let the caller handle exception throw; } finally { designerView.EndDragShadowTracking(dragShadow); foreach (WorkflowViewElement view in draggedViewElements) { if (view != null) { view.IsHitTestVisible = true; } } } } return(dataObject); }
public static DragDropEffects DoDragMove(WorkflowViewElement draggedViewElement, Point referencePoint) { if (draggedViewElement == null) { throw FxTrace.Exception.ArgumentNull("draggedViewElement"); } if (referencePoint == null) { throw FxTrace.Exception.ArgumentNull("referencePoint"); } ModelItem draggedActivityModelItem = draggedViewElement.ModelItem; DataObject dataObject = new DataObject(ModelItemDataFormat, draggedActivityModelItem); dataObject.SetData(CompositeViewFormat, GetCompositeView(draggedViewElement)); dataObject.SetData(DragAnchorPointFormat, referencePoint); List <ModelItem> draggedModelItems = new List <ModelItem>(); draggedModelItems.Add(draggedActivityModelItem); dataObject.SetData(ModelItemsDataFormat, draggedModelItems); DesignerView view = draggedViewElement.Context.Services.GetService <DesignerView>(); ViewElementDragShadow dragShadow = new ViewElementDragShadow(view.scrollableContent, draggedViewElement, referencePoint, view.ZoomFactor); draggedViewElement.IsHitTestVisible = false; view.BeginDragShadowTracking(dragShadow); //whenever drag drop fails - ensure getting rid of drag shadow try { DragDrop.DoDragDrop(GetCompositeView(draggedViewElement), dataObject, DragDropEffects.Move | DragDropEffects.Copy | DragDropEffects.Scroll | DragDropEffects.Link); } catch { //let the caller handle exception throw; } finally { view.EndDragShadowTracking(dragShadow); draggedViewElement.IsHitTestVisible = true; } return(GetDragDropCompletedEffects(dataObject)); }