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);
        }