// Adorners
 // Creates or updates the dragged Adorner.
 private void ShowDraggedAdorner(Point currentPosition)
 {
     if (draggedAdorner == null) {
         AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(sourceItemsControl);
         draggedAdorner = new DraggedAdorner(draggedData, GetDragDropTemplate(sourceItemsControl),
                                             sourceItemContainer, adornerLayer);
     }
     try {
         draggedAdorner.SetPosition(currentPosition.X - initialMousePosition.X + initialMouseOffset.X,
                                    currentPosition.Y - initialMousePosition.Y + initialMouseOffset.Y);
     } catch(InvalidOperationException) {
         throw new InvalidOperationException();
     }
 }
 private void RemoveDraggedAdorner()
 {
     if (draggedAdorner != null) {
         draggedAdorner.Detach();
         draggedAdorner = null;
     }
 }