Beispiel #1
0
        private void CleanUpAfterDrag()
        {
            var window = Window.GetWindow(_MetroControl);

            window.ClearValue(Window.AllowDropProperty);
            window.DragEnter    -= HandleDrag;
            window.DragOver     -= HandleDrag;
            window.DragLeave    -= HandleDrag;
            window.Drop         -= HandleDrop;
            window.GiveFeedback -= HandleGiveFeedback;

            VisualStateManager.GoToState(_DragTile, "IsNotDragSource", true);

            if (_DragAdorner != null)
            {
                _DragAdorner.Detach();
            }
            if (_ScrollHelper != null)
            {
                _ScrollHelper.Stop();
            }

            _DragAdorner    = null;
            _DragSourcePage = null;
            _DragTile       = null;
            _DragData       = null;
            _TileDropHelper = null;
            _ScrollHelper   = null;
            _NewPageHelper  = null;
        }
Beispiel #2
0
        private void PrepareForDrag()
        {
            var window = Window.GetWindow(_MetroControl);

            window.AllowDrop     = true;
            window.DragEnter    += HandleDrag;
            window.DragOver     += HandleDrag;
            window.DragLeave    += HandleDrag;
            window.Drop         += HandleDrop;
            window.GiveFeedback += HandleGiveFeedback;

            if (_MetroControlPanel == null)
            {
                _MetroControlPanel = _MetroControl.GetItemsHost();
            }

            VisualStateManager.GoToState(_DragTile, "IsDragSource", true);
            _DragSourcePage = _DragTile.GetVisualParent <MetroStartPage>();
            _DragData       = _DragSourcePage != null?_DragSourcePage.ItemContainerGenerator.ItemFromContainer(_DragTile) : null;

            var adornerTemplate = (DataTemplate)_MetroControl.FindResource(MetroControl.DragAdornerDataTemplateKey);

            _DragAdorner = new TemplatedDragDropAdorner(_MetroControl, adornerTemplate, _DragData);

            _AdornerOffset = _MetroControl.TranslatePoint(_MouseDownPosition, _DragTile);

            _CenterOffset = new Point();
            _CenterOffset.Offset((_DragTile.RenderSize.Width / 2) - _AdornerOffset.X, (_DragTile.RenderSize.Height / 2) - _AdornerOffset.Y);

            _TileDropHelper = new TileDropHelper(this);
            _ScrollHelper   = new AutoScrollHelper(this);
            if (CanCreateNewPages())
            {
                _NewPageHelper = new DragTileIntoNewPageHelper(this);
            }
        }