void MoveSelectedRowsToGroup(DragDropManagerBase sourceManager, int groupRowHandle, DependencyObject hitElement) { GroupInfo[] groupInfo = GetGroupInfos(groupRowHandle); if(!CanMoveSelectedRowsToGroup(sourceManager, groupInfo, hitElement)) return; foreach(object obj in sourceManager.DraggingRows) { foreach(GroupInfo item in groupInfo) { SetPropertyValue(sourceManager.GetObject(obj), item.FieldName, item.Value); } if(!ItemsSource.Contains(obj)) { sourceManager.ItemsSource.Remove(sourceManager.GetObject(obj)); ItemsSource.Add(sourceManager.GetObject(obj)); } } }
void MoveSelectedRows(DragDropManagerBase sourceManager, int insertRowHandle, DependencyObject hitElement) { object insertObject = GridControl.GetRow(insertRowHandle); if(insertObject == null || sourceManager.DraggingRows.Contains(GridControl.GetRow(insertRowHandle))) return; FrameworkElement row = GetRowElement(hitElement); DropTargetType dropTargetType = GetDropTargetType(row); if(dropTargetType == DropTargetType.None) return; int index = ItemsSource.IndexOf(insertObject); if(dropTargetType == DropTargetType.InsertRowsAfter) index++; GridControl.BeginDataUpdate(); foreach(object obj in sourceManager.DraggingRows) { object sourceObject = sourceManager.GetObject(obj); if(ReferenceEquals(ItemsSource, sourceManager.GetSource(obj))) { if(index > ItemsSource.IndexOf(sourceObject)) index--; } sourceManager.ItemsSource.Remove(sourceObject); ItemsSource.Insert(index, sourceObject); index++; } GridControl.EndDataUpdate(); if(RestoreSelection) { int startRowHandle = GridControl.GetRowHandleByListIndex(ItemsSource.IndexOf(sourceManager.DraggingRows[0])); int endRowHandle = GridControl.GetRowHandleByListIndex(ItemsSource.IndexOf(sourceManager.DraggingRows[sourceManager.DraggingRows.Count - 1])); TableView.SelectRange(startRowHandle, endRowHandle); } else TableView.ClearSelection(); TableView.FocusedRow = sourceManager.DraggingRows[0]; }
protected override void AddRow(DragDropManagerBase sourceManager, object row, int insertRowHandle) { sourceManager.GetSource(row).Remove(sourceManager.GetObject(row)); DropStrategy.DropObject(ItemsSource, null, DropTargetType.DataArea, sourceManager.GetObject(row)); InsertObject(ItemsSource, null, DropTargetType.DataArea, sourceManager.GetObject(row), -1); }
void MoveSelectedRows(DragDropManagerBase sourceManager, int insertRowHandle, DependencyObject hitElement) { TreeListNode insertNode = TreeListView.GetNodeByRowHandle(insertRowHandle); object insertObject = insertNode.Content; if(insertObject == null || sourceManager.DraggingRows.Contains(insertObject)) return; DropTargetType dropTargetType = GetDropTargetType(GetRowElement(hitElement) as DataContentPresenter); if(dropTargetType == DropTargetType.None) return; DataControl.BeginDataUpdate(); IList source = GetSource(insertNode); int insertIndex = source.IndexOf(insertNode.Content) + (dropTargetType == DropTargetType.InsertRowsAfter ? 1 : 0); foreach(object obj in sourceManager.DraggingRows) { if(ReferenceEquals(source, sourceManager.GetSource(obj))) { if(insertIndex > source.IndexOf(GetObject(obj))) insertIndex--; if(ReferenceEquals(insertObject, sourceManager.GetObject(obj))) continue; } sourceManager.GetSource(obj).Remove(sourceManager.GetObject(obj)); DropStrategy.DropObject(source, insertNode, dropTargetType, sourceManager.GetObject(obj)); InsertObject(source, insertNode, dropTargetType, sourceManager.GetObject(obj), insertIndex); insertIndex++; } DataControl.EndDataUpdate(); if(TreeListView.MultiSelectMode == TableViewSelectMode.Row && RestoreSelection) { int[] selectedHandles = TreeListView.GetSelectedRowHandles(); int startRowHandle = selectedHandles[0]; int endRowHandle = selectedHandles[selectedHandles.Length - 1]; TreeListView.SelectRange(startRowHandle, endRowHandle); } else TreeListView.ClearSelection(); TreeListView.FocusedRow = GetObject(sourceManager.DraggingRows[0]); }
protected internal override void OnDrop(DragDropManagerBase sourceManager, UIElement source, Point pt) { ListBoxDropEventArgs e = RaiseDropEvent(sourceManager); if(!e.Handled) { if(sourceManager.DraggingRows.Count > 0 && AllowDrop && !ReferenceEquals(this, sourceManager)) { foreach(object obj in sourceManager.DraggingRows) { object rawObject = sourceManager.GetObject(obj); sourceManager.GetSource(obj).Remove(rawObject); ItemsSource.Add(rawObject); } } } RaiseDroppedEvent(sourceManager, e.DraggedRows); }