How to reproduce: check the attached file Workaround: create a custom drag-drop service public class CustomListControlDragDropService : ListControlDragDropService { private RadListDataItem draggedItem; public CustomListControlDragDropService(RadListElement owner) : base(owner) { } protected override void PerformStart() { base.PerformStart(); RadListVisualItem draggedVisualItem = this.Context as RadListVisualItem; if (draggedVisualItem != null) { this.draggedItem = draggedVisualItem.Data; } } protected override void PerformStop() { base.PerformStop(); this.DisposeHint(); this.draggedItem = null; } protected override void OnPreviewDragDropCore(RadListElement targetList, RadListVisualItem targetElement) { int index = targetList.Items.Count - 1; if (targetElement != null) { index = targetList.Items.IndexOf(targetElement.Data); } if (this.draggedItem.Owner != targetList) { index++; } RadListElement dragedListView = this.draggedItem.Owner; IList<RadListDataItem> itemsToMove = new List<RadListDataItem>(dragedListView.SelectedItems.Count); foreach (RadListDataItem item in dragedListView.SelectedItems) { itemsToMove.Add(item); } dragedListView.BeginUpdate(); foreach (RadListDataItem item in itemsToMove) { item.Selected = item.Active = false; dragedListView.Items.Remove(item); } dragedListView.EndUpdate(); targetList.BeginUpdate(); foreach (RadListDataItem item in itemsToMove) { if (index > targetList.Items.Count) { targetList.Items.Add(item); } else { targetList.Items.Insert(index, item); } item.Selected = item.Active = true; index++; } targetList.EndUpdate(); } }