private static void CreatePreviewAdorner() { // Clear if there is an existing adorner RemovePreviewAdorner(); AdornerLayer layer = AdornerLayer.GetAdornerLayer(GetTopContainer()); UIElement feedbackUI = _currentSourceAdvisor.GetVisualFeedback(_draggedElt); _overlayElt = new DropPreviewAdorner(feedbackUI, _draggedElt, layer); layer.Add(_overlayElt); }
private static void RemovePreviewAdorner() { if (_overlayElt != null) { AdornerLayer.GetAdornerLayer(GetTopContainer()).Remove(_overlayElt); _overlayElt = null; } }
static void CreatePreviewAdorner(object sender, DragEventArgs e) { // Set the Drag source UI IDropTargetAdvisor adv = GetDropTargetAdvisor(sender as FrameworkElement); adv.TargetUI = sender as UIElement; // get the data // get the UIFeedback UIFeedback = adv.GetVisualFeedback(e.Data); DoubleAnimation anim = new DoubleAnimation(0.75, new Duration(TimeSpan.FromMilliseconds(500))); anim.From = 0.25; anim.AutoReverse = true; anim.RepeatBehavior = RepeatBehavior.Forever; UIFeedback.BeginAnimation(UIElement.OpacityProperty, anim); UIFeedback.IsHitTestVisible = false; // add it to the adornment layer AdornerLayer layer = AdornerLayer.GetAdornerLayer(sender as UIElement); Overlay = new DropPreviewAdorner(UIFeedback, sender as UIElement, layer); layer.Add(Overlay); Overlay.Location = GetOverlaypoint(sender, e); }