コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
ファイル: DragOperation.cs プロジェクト: Robert-Louis/Uno
        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
        }
コード例 #3
0
 public void Hide(DragView view)
 {
     Children.Remove(view);
 }
コード例 #4
0
 public void Show(DragView view)
 {
     view.IsHitTestVisible = false;
     Children.Add(view);
 }