protected override void OnDrop(DragEventArgs e) { int index = addAtEndMarker; WorkflowViewElement dropTarget = null; if (e.OriginalSource is WorkflowViewElement) { dropTarget = (WorkflowViewElement)e.OriginalSource; } else { dropTarget = VisualTreeUtils.FindFocusableParent <WorkflowViewElement>((UIElement)e.OriginalSource); } if (null != dropTarget && null != dropTarget.ModelItem) { int targetIndex = this.Items.IndexOf(dropTarget.ModelItem); if (-1 != targetIndex) { index = targetIndex + 1; } } OnItemsDropped(e, index); base.OnDrop(e); }