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); }
private static void DropTarget_PreviewDragEnter(object sender, DragEventArgs e) { // Get the current drop target advisor CurrentDropTargetAdvisor = GetDropTargetAdvisor(sender as DependencyObject); if (UpdateEffects(sender, e) == false) { return; } // Setup the preview Adorner UIElement feedbackUI = CurrentDropTargetAdvisor.GetVisualFeedback(e.Data); _offsetPoint = CurrentDropTargetAdvisor.ApplyMouseOffset ? (Point)e.Data.GetData(DragOffsetFormat) : new Point(); CreatePreviewAdorner(sender as UIElement, feedbackUI); e.Handled = true; }