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