Example #1
0
        // Creates or updates the DropAdorner.
        private void UpdateDropAdorner(FrameworkElement adornedElement, bool isVertical, bool insertAfter)
        {
            // Remove the old adorner if adorner is shown on wrong item container.
            if (_dropAdorner != null && _dropAdorner.AdornedElement != adornedElement)
            {
                RemoveDropAdorner();
            }

            if (adornedElement == null)
            {
                return;
            }

            // Create new adorner if necessary.
            if (_dropAdorner == null)
            {
                // We need to get the AdornerLayer of the ItemContainer and not the ItemsControl.
                // The ItemsControl could contain a ScrollContentPresenter with its own
                // AdornerLayer. If we would use the AdornerLayer of the Window, then the drop
                // adorner could render over the scroll bar of the ItemsControl.
                _dropAdorner = new DropAdorner(isVertical, insertAfter, adornedElement);
                var adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement);
                adornerLayer?.Add(_dropAdorner);
            }

            // Update the position of the adorner.
            if (_dropAdorner != null)
            {
                _dropAdorner.InsertAfter = insertAfter;
                _dropAdorner.InvalidateVisual();
            }
        }
Example #2
0
        private void RemoveDropAdorner()
        {
            if (_dropAdorner != null)
            {
                var adornerLayer = AdornerLayer.GetAdornerLayer(_dropAdorner.AdornedElement);
                adornerLayer?.Remove(_dropAdorner);

                _dropAdorner = null;
            }
        }
        private void RemoveDropAdorner()
        {
            if (_dropAdorner != null)
            {
                var adornerLayer = AdornerLayer.GetAdornerLayer(_dropAdorner.AdornedElement);
                adornerLayer?.Remove(_dropAdorner);

                _dropAdorner = null;
            }
        }
        // Creates or updates the DropAdorner.
        private void UpdateDropAdorner(FrameworkElement adornedElement, bool isVertical, bool insertAfter)
        {
            // Remove the old adorner if adorner is shown on wrong item container.
            if (_dropAdorner != null && _dropAdorner.AdornedElement != adornedElement)
                RemoveDropAdorner();

            if (adornedElement == null)
                return;

            // Create new adorner if necessary.
            if (_dropAdorner == null)
            {
                // We need to get the AdornerLayer of the ItemContainer and not the ItemsControl.
                // The ItemsControl could contain a ScrollContentPresenter with its own
                // AdornerLayer. If we would use the AdornerLayer of the Window, then the drop
                // adorner could render over the scroll bar of the ItemsControl.
                _dropAdorner = new DropAdorner(isVertical, insertAfter, adornedElement);
                var adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement);
                adornerLayer?.Add(_dropAdorner);
            }

            // Update the position of the adorner.
            if (_dropAdorner != null)
            {
                _dropAdorner.InsertAfter = insertAfter;
                _dropAdorner.InvalidateVisual();
            }
        }