protected virtual void OnPreviewDragDropCore( RadListElement targetList, RadListVisualItem targetElement) { int num = targetList.Items.Count - 1; if (targetElement != null) num = targetList.Items.IndexOf(targetElement.Data); if (this.draggedItem.Owner != targetList) ++num; RadListElement owner = this.draggedItem.Owner; IList<RadListDataItem> radListDataItemList = (IList<RadListDataItem>) new List<RadListDataItem>(owner.SelectedItems.Count); foreach (RadListDataItem selectedItem in (IEnumerable<RadListDataItem>) owner.SelectedItems) radListDataItemList.Add(selectedItem); owner.BeginUpdate(); foreach (RadListDataItem radListDataItem in (IEnumerable<RadListDataItem>) radListDataItemList) { radListDataItem.Selected = radListDataItem.Active = false; owner.Items.Remove(radListDataItem); } owner.EndUpdate(); targetList.BeginUpdate(); foreach (RadListDataItem radListDataItem in (IEnumerable<RadListDataItem>) radListDataItemList) { targetList.Items.Insert(num++, radListDataItem); radListDataItem.Selected = radListDataItem.Active = true; } targetList.EndUpdate(); }
protected virtual void OnPreviewDragDropCore(RadListVisualItem dragedItem, RadListElement targetList, RadListVisualItem targetElement) { int index = targetList.Items.IndexOf(targetElement.Data); Debug.Assert(index != -1); RadListElement dragedListView = dragedItem.Data.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) { dragedListView.Items.Remove(item); } dragedListView.EndUpdate(); targetList.BeginUpdate(); foreach (RadListDataItem item in itemsToMove) { targetList.Items.Insert(index++, item); } targetList.EndUpdate(); }