/// <summary> /// Raises the <see cref="E:ReorderingCompleted" /> event. /// </summary> /// <param name="reorderActionCompletedEventArgs">The <see cref="ReorderActionCompletedEventArgs" /> instance containing the event data.</param> protected virtual void OnReorderingCompleted(ReorderActionCompletedEventArgs reorderActionCompletedEventArgs) { if (this.ReorderingCompleted != null) { this.ReorderingCompleted(this, reorderActionCompletedEventArgs); } }
/// <summary> /// Hides any drop-indicators that are currently visible. /// </summary> private void ClearDropTarget() { foreach (ReorderListBoxItem itemContainer in this.itemsPanel.Children) { VisualStateManager.GoToState(itemContainer, ReorderListBoxItem.NoDropIndicatorState, false); itemContainer.Tag = null; } reorderActionCompletedEventArgs = null; }
/// <summary> /// Updates the targeted index -- that is the index where the item will be moved to if dropped at this point. /// </summary> private void UpdateDropTargetIndex(ReorderListBoxItem targetItemContainer, bool after) { int dragItemIndex = this.Items.IndexOf(this.dragItem); int targetItemIndex = this.Items.IndexOf(targetItemContainer.Content); int newDropTargetIndex; if (targetItemIndex == dragItemIndex) { newDropTargetIndex = dragItemIndex; } else { newDropTargetIndex = targetItemIndex + (after ? 1 : 0) - (targetItemIndex >= dragItemIndex ? 1 : 0); } if (newDropTargetIndex != this.dropTargetIndex) { reorderActionCompletedEventArgs = new ReorderActionCompletedEventArgs(); reorderActionCompletedEventArgs.OriginalIndex = dragItemIndex; reorderActionCompletedEventArgs.TargetIndex = newDropTargetIndex; reorderActionCompletedEventArgs.OriginalSource = this.dragItem; reorderActionCompletedEventArgs.TargetObject = targetItemContainer.Content; reorderActionCompletedEventArgs.Orinentation = after ? MovingOrientation.Down : MovingOrientation.Up; if (dragItemIndex == newDropTargetIndex) { reorderActionCompletedEventArgs.Orinentation = MovingOrientation.None; } this.dropTargetIndex = newDropTargetIndex; } }