private static DragAdorner <T> getDragDropAdorner(DependencyObject s, bool createIfNotExists = true) { Window parentWindow = Window.GetWindow(s); if (parentWindow != null) { AdornerDecorator decorator = UITools.FindVisualChildByName <AdornerDecorator> (parentWindow, "PART_DragDropAdorner"); if (decorator == null) { throw new ArgumentException("PART_DragDropAdorner not found, or not an AdornerDecorator"); } else { AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(decorator); Adorner[] adorners = adornerLayer.GetAdorners(adornerLayer); if (adorners != null) { foreach (var adorner in adorners) { if (adorner is DragAdorner <T> ) { return(adorner as DragAdorner <T>); } } } if (createIfNotExists) { DragAdorner <T> newAdorner = new DragAdorner <T>(adornerLayer); adornerLayer.Add(newAdorner); return(newAdorner); } } } return(null); }
public static void SetDragAdorner(DependencyObject obj, DragAdorner <T> value) { obj.SetValue(DragAdornerProperty, value); }