private void BeginDrag(FrameworkElement dragContainer)
        {
            _dragItem = dragContainer;
            if (_dragItem == null)
            {
                return;
            }

            // get the index of the item (and make sure that it is a valid child)
            _dragItemIndex = this.ItemContainerGenerator.IndexFromContainer(_dragItem);
            if (_dragItemIndex == -1)
            {
                return;
            }

            // create an adorner
            _dragAdorner = new DragPreviewAdorner(_dragItem, _dragItem);
            _dragAdorner.IsHitTestVisible = false;
            this.AdornerLayer.Add(_dragAdorner);

            // tell the item it's dragging and hide it
            SetIsDragging(_dragItem, true);
            _dragItem.Visibility = Visibility.Hidden;

            // get the current location of the mouse
            _mouseDown = Mouse.GetPosition(this);

            // set mouse capture (so that we are dragging)
            Mouse.Capture(this);
            _isDragging = true;

            // raise an event to signal that we've started ragging
            RaiseReorderBeginEvent();
        }
        private void BeginDrag(FrameworkElement dragContainer)
        {
            _dragItem = dragContainer;
            if (_dragItem == null) return;

            // get the index of the item (and make sure that it is a valid child)
            _dragItemIndex = this.ItemContainerGenerator.IndexFromContainer(_dragItem);
            if (_dragItemIndex == -1) return;

            // create an adorner
            _dragAdorner = new DragPreviewAdorner(_dragItem, _dragItem);
            _dragAdorner.IsHitTestVisible = false;
            this.AdornerLayer.Add(_dragAdorner);

            // tell the item it's dragging and hide it
            SetIsDragging(_dragItem, true);
            _dragItem.Visibility = Visibility.Hidden;

            // get the current location of the mouse
            _mouseDown = Mouse.GetPosition(this);

            // set mouse capture (so that we are dragging)
            Mouse.Capture(this);
            _isDragging = true;

            // raise an event to signal that we've started ragging
            RaiseReorderBeginEvent();
        }