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