private static DragDropPreview GetDragDropPreview(IDragInfo dragInfo, UIElement visualTarget, UIElement sender) { var visualSource = dragInfo?.VisualSource; if (visualSource is null) { return(null); } var hasDragDropPreview = DragDropPreview.HasDragDropPreview(dragInfo, visualTarget ?? visualSource, sender); if (hasDragDropPreview) { var rootElement = TryGetRootElementFinder(sender).FindRoot(visualTarget ?? visualSource); var preview = new DragDropPreview(rootElement, dragInfo, visualTarget ?? visualSource, sender); if (preview.Child != null) { preview.IsOpen = true; return(preview); } } return(null); }