internal IDisposable OpenDragAndDrop(DragView dragView) { #if __WASM__ || __SKIA__ Grid rootElement = _window; #else Grid rootElement = _main; #endif if (rootElement is null) { return(Disposable.Empty); } if (_dragRoot is null) { _dragRoot = new DragRoot(); rootElement.Children.Add(_dragRoot); } _dragRoot.Show(dragView); return(Disposable.Create(Remove)); void Remove() { _dragRoot.Hide(dragView); if (_dragRoot.PendingDragCount == 0) { rootElement.Children.Remove(_dragRoot); _dragRoot = null; } } }
public DragOperation(Window window, IDragDropExtension?extension, CoreDragInfo info, ICoreDropOperationTarget?target = null) { _extension = extension; Info = info; _target = target ?? new DropUITarget(window); // The DropUITarget must be re-created for each drag operation! (Caching of the drag ui-override) _view = new DragView(info.DragUI as DragUI); _viewHandle = window.OpenDragAndDrop(_view); _viewOverride = new CoreDragUIOverride(); // UWP does re-use the same instance for each update on _target }
public void Hide(DragView view) { Children.Remove(view); }
public void Show(DragView view) { view.IsHitTestVisible = false; Children.Add(view); }