private Object RaiseCallback(DragDroperOperation oper, Object data) { if (_callback != null) { Object result = _callback(oper, data); return(result); } return(null); }
private Boolean CheckDragDrop(DragDroperOperation oper, Object data_1, Object data_2) { Boolean result = false; if (OnDragDrop != null) { List <TreeViewItemEx> items = (List <TreeViewItemEx>)data_1; List <TreeViewItemEx> newItems = (List <TreeViewItemEx>)data_2; result = OnDragDrop(oper, items, newItems); } return(result); }
private Object RaiseCallback(DragDroperOperation oper, Object data) { if (_callback != null) { Object result = _callback(oper, data); return result; } return null; }
private Object TreeView_DragDrop(DragDroperOperation oper, Object data) { switch (oper) { case DragDroperOperation.Start: { List <TreeViewItemEx> items = SelectedItems; if (items.Count > 0) { if (CheckDragDrop(oper, items, null) == true) { return(items); } } } break; case DragDroperOperation.Move: { if (CheckDragDrop(oper, data, null) == true) { // Определение элемента, над которым сейчас находится курсор TreeViewItemEx dragOverItem = GetDragOverItem(); // Выделение элемента (для подстветки позиции куда перемещается элемент SetDragOverItem(dragOverItem); // Возвращение результата: Можно перемещать данные return(data); } } break; case DragDroperOperation.Stop: { if (CheckDragDrop(oper, data, null) == true) { TreeViewItemEx destItem = DragDestItem; if (DragDestItem == null) { destItem = DragOverItem; } if (destItem != null) { // Перемещение элементов на новые позиции (копирование) List <TreeViewItemEx> items = (List <TreeViewItemEx>)data; List <TreeViewItemEx> newItems = new List <TreeViewItemEx>(); foreach (TreeViewItemEx item in items) { TreeViewItemEx newItem = this.Add(destItem, item.Text, item.ImageUri, item.Tag); newItems.Add(newItem); } Boolean isMove = (Keyboarder.IsControl == false); if (isMove) { // Операция копирования не использовалась: Операция перемещения, удаление перемещаемых элементов foreach (TreeViewItemEx item in items) { this.Remove(item); } } // Оповещение приложения об окончании операции if (isMove) { CheckDragDrop(DragDroperOperation.EndMove, items, newItems); } else { CheckDragDrop(DragDroperOperation.EndCopy, items, newItems); } } // end if (определен получатель операции) } // end if (операция подтверждена приложением) // Удаление выделения (использовался в операции DragDrop) SetDragOverItem(null); } break; } // end switch (анализ операции) return(null); }
private Object TreeView_DragDrop(DragDroperOperation oper, Object data) { switch (oper) { case DragDroperOperation.Start: { List<TreeViewItemEx> items = SelectedItems; if (items.Count > 0) { if (CheckDragDrop(oper, items, null) == true) return items; } } break; case DragDroperOperation.Move: { if (CheckDragDrop(oper, data, null) == true) { // Определение элемента, над которым сейчас находится курсор TreeViewItemEx dragOverItem = GetDragOverItem(); // Выделение элемента (для подстветки позиции куда перемещается элемент SetDragOverItem(dragOverItem); // Возвращение результата: Можно перемещать данные return data; } } break; case DragDroperOperation.Stop: { if (CheckDragDrop(oper, data, null) == true) { TreeViewItemEx destItem = DragDestItem; if (DragDestItem == null) destItem = DragOverItem; if (destItem != null) { // Перемещение элементов на новые позиции (копирование) List<TreeViewItemEx> items = (List<TreeViewItemEx>)data; List<TreeViewItemEx> newItems = new List<TreeViewItemEx>(); foreach (TreeViewItemEx item in items) { TreeViewItemEx newItem = this.Add(destItem, item.Text, item.ImageUri, item.Tag); newItems.Add(newItem); } Boolean isMove = (Keyboarder.IsControl == false); if (isMove) { // Операция копирования не использовалась: Операция перемещения, удаление перемещаемых элементов foreach (TreeViewItemEx item in items) { this.Remove(item); } } // Оповещение приложения об окончании операции if (isMove) CheckDragDrop(DragDroperOperation.EndMove, items, newItems); else CheckDragDrop(DragDroperOperation.EndCopy, items, newItems); } // end if (определен получатель операции) } // end if (операция подтверждена приложением) // Удаление выделения (использовался в операции DragDrop) SetDragOverItem(null); } break; } // end switch (анализ операции) return null; }
private Boolean CheckDragDrop(DragDroperOperation oper, Object data_1, Object data_2) { Boolean result = false; if (OnDragDrop != null) { List<TreeViewItemEx> items = (List<TreeViewItemEx>)data_1; List<TreeViewItemEx> newItems = (List<TreeViewItemEx>)data_2; result = OnDragDrop(oper, items, newItems); } return result; }