public void UpdateDrag(DragEventArgs e)
        {
            var categoryItemsControl      = BudgetEditor.CategoryItemsControl;
            var categoryItemsScrollViewer = BudgetEditor.CategoryItemsScrollViewer;
            var position = e.GetPosition(categoryItemsScrollViewer);
            var categoryItemsControlPosition = e.GetPosition(categoryItemsControl);

            if (position.Y < 0 || position.X < 0 || position.Y > categoryItemsControl.ActualHeight || position.X > categoryItemsControl.ActualWidth)
            {
                DragAdorner       = null;
                DropTargetAdorner = null;
                e.Effects         = DragDropEffects.None;
                e.Handled         = true;
                return;
            }

            if (DragAdorner == null)
            {
                DragAdorner = CreateDragAdorner();
            }

            var movePosition = e.GetPosition(DragAdorner.AdornedElement);

            DragAdorner?.Move(movePosition, new Point(0, 1), ref AdornerMousePosition, ref AdornerSize);

            Scroll(categoryItemsScrollViewer, position);

            UpdateDropTarget(categoryItemsControl, categoryItemsControlPosition);

            e.Effects = DragDropEffects.Move;
            e.Handled = true;
        }