/// <summary>
        /// Dragging has ended, see if VM is IDiagramDesignerItem and notify of resizing end.
        /// </summary>
        void ResizeThumb_DragCompleted(object sender, DragCompletedEventArgs e)
        {
            if (!dragStarted)
            {
                return;
            }
            else
            {
                dragStarted = false;
            }

            DiagramItemsResizeInfo resizeInfo = diagramDesignerVM.CalcResizeInfo(this.selectedItemsVM, e.HorizontalChange, e.VerticalChange, direction.Value);

            diagramDesignerVM.ResizeElements(this.selectedItemsVM, resizeInfo);

            // remove drag adorner
            if (this.IsMouseCaptured)
            {
                this.ReleaseMouseCapture();
            }

            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.diagramDesigner);

            if (adornerLayer != null)
            {
                adornerLayer.Remove(this.dragAdorner);
            }

            e.Handled = false;
        }
        /// <summary>
        /// Resize item(s).
        /// </summary>
        void ResizeThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            if (!dragStarted)
            {
                if (Math.Abs(e.HorizontalChange) >= MinDistanceToStart || Math.Abs(e.VerticalChange) >= MinDistanceToStart)
                {
                    Start();
                    dragStarted = true;
                }
            }

            if (dragStarted)
            {
                if (diagramDesignerVM == null)
                {
                    return;
                }

                // update position of the drag adorner
                DiagramItemsResizeInfo resizeInfo = diagramDesignerVM.CalcResizeInfo(this.selectedItemsVM, e.HorizontalChange, e.VerticalChange, direction.Value);
                if (selectedItemsVM.Count != dragCanvas.Children.Count)
                {
                    return;
                }

                for (int i = 0; i < selectedItemsVM.Count; i++)
                {
                    FrameworkElement elem = dragCanvas.Children[i] as FrameworkElement;
                    if (elem != null)
                    {
                        elem.Margin = new System.Windows.Thickness(
                            selectedItemsVM[i].AbsoluteLocation.X + resizeInfo.LeftChange,
                            selectedItemsVM[i].AbsoluteLocation.Y + resizeInfo.TopChange, 0, 0);
                        elem.Width  = selectedItemsVM[i].Width + resizeInfo.WidthChange;
                        elem.Height = selectedItemsVM[i].Height + resizeInfo.HeightChange;
                    }
                }

                // update adorned element
                this.dragAdorner.Update();
            }
        }