/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SchedulerRunItem_OnLoaded(object sender, RoutedEventArgs e) { this._schedulerWindow = this.Tag as SchedulerWindow; var layer = AdornerLayer.GetAdornerLayer(this); DragDropAdorner moveAdorner = new DragDropAdorner(this); layer.Add(moveAdorner); }
/// <summary> /// /// </summary> /// <param name="e"></param> protected override void OnDragEnter(DragEventArgs e) { base.OnDragEnter(e); SchedulerWindow.SchedulerRunItemDisplayModel model = e.Data.GetData("RunItem") as SchedulerWindow.SchedulerRunItemDisplayModel; int draggedIndex = (int)e.Data.GetData("Index"); if (model.IsRunStarted) { AllowDrop = false; e.Handled = true; return; } if (model.IsRunStarted) { e.Effects = DragDropEffects.None; } var thisIndex = this._schedulerWindow.ScheduledRuns.Items.IndexOf(this.DataContext); bool isOrderUp = true; if (thisIndex == draggedIndex) { return; } else if (thisIndex > draggedIndex) { isOrderUp = false; } var layer = AdornerLayer.GetAdornerLayer(this); DragDropAdorner moveAdorner = (DragDropAdorner)layer.GetAdorners(this) .First(t => t.GetType() == typeof(DragDropAdorner)); if (moveAdorner != null) { if (isOrderUp) { moveAdorner.SetMoveUpAdorner(); } else { moveAdorner.SetMoveDownAdorner(); } moveAdorner.Visibility = Visibility.Visible; } }