private void root_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            CurrentElement = sender as FrameworkElement;

            if (CurrentElement != null && GetEditMode(CurrentElement))
            {
                if (
                    !ShowArrows(CurrentElement, ref _transformX, ref _transformY, ref _renderOriginX, ref _renderOriginY))
                {
                    return;
                }

                int mouseCol, mouseRow;
                _initalState.ZIndex = GetZIndex(CurrentElement);
                SetZIndex(CurrentElement, 1000);


                _mouseOffset = Mouse.GetPosition(this);
                GetPosition(out mouseCol, out mouseRow);


                _initalState.Margin  = CurrentElement.Margin;
                _initalState.Element = CurrentElement;
                _initalState.ColSpan = GetColumnSpan(CurrentElement);
                _initalState.RowSpan = GetRowSpan(CurrentElement);
                _initalState.Col     = GetColumn(CurrentElement);
                _initalState.Row     = GetRow(CurrentElement);
                _initalState.MouseGridRowPosition    = mouseRow;
                _initalState.MouseGridColumnPosition = mouseCol;

                _isInDrag = true;

                CurrentElement.CaptureMouse();
                e.Handled = true;
            }
        }