//--------------------------------------------------------------------------------------------------------- /// <summary> /// Бросание модели над коллекцией моделей /// </summary> /// <param name="model">Модель</param> /// <param name="item">Коллекция</param> /// <param name="args">Аргументы события</param> /// <returns>Статус обработки события</returns> //--------------------------------------------------------------------------------------------------------- public Boolean DropModelOverCollectionModel(ICubeXModel model, TreeViewItem item, DragEventArgs args) { ICubeXCollectionModel collection_model = item.DataContext as ICubeXCollectionModel; // Если коллекция поддерживает данную модель if (collection_model != null && collection_model.IsSupportModel(model as ICubeXModelOwned)) { // Проверка на поддержку операции добавления ICubeXCollectionSupportAdd operation_add = item.DataContext as ICubeXCollectionSupportAdd; if (operation_add != null) { if (args.Effects == DragDropEffects.Move) { ICubeXModelOwned model_owned = model as ICubeXModelOwned; SetGroupProperties(model_owned, operation_add.IModels[0] as ICubeXModelOwned); operation_add.AddExistingModel(model_owned); } else { if (args.Effects == DragDropEffects.Copy) { ICubeXModelOwned model_owned = model.Clone() as ICubeXModelOwned; SetGroupProperties(model_owned, operation_add.IModels[0] as ICubeXModelOwned); operation_add.AddExistingModel(model_owned); } } } return(true); } return(false); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Бросание модели над другой моделью /// </summary> /// <param name="model">Модель</param> /// <param name="item">Модель</param> /// <param name="args">Аргументы события</param> /// <returns>Статус обработки события</returns> //--------------------------------------------------------------------------------------------------------- public Boolean DropModelOverModel(ICubeXModel model, TreeViewItem item, DragEventArgs args) { // Элемент находится над моделей ICubeXModelOwned model_over = item.DataContext as ICubeXModelOwned; if (model_over != null) { // Сначала проверяем возможность вставки в конкретное место ICubeXCollectionSupportInsert operation_insert = model_over.IOwner as ICubeXCollectionSupportInsert; if (operation_insert != null && operation_insert.IsSupportModel(model as ICubeXModelOwned)) { if (args.Effects == DragDropEffects.Move) { ICubeXModelOwned model_owned = model as ICubeXModelOwned; SetGroupProperties(model_owned, model_over); operation_insert.InsertAfterModel(model_over, model_owned); } else { if (args.Effects == DragDropEffects.Copy) { ICubeXModelOwned model_owned = model.Clone() as ICubeXModelOwned; SetGroupProperties(model_owned, model_over); operation_insert.InsertAfterModel(model_over, model_owned); } } } else { // Проверяем возможность простого добавления ICubeXCollectionSupportAdd operation_add = model_over.IOwner as ICubeXCollectionSupportAdd; if (operation_add != null && operation_add.IsSupportModel(model as ICubeXModelOwned)) { if (args.Effects == DragDropEffects.Move) { ICubeXModelOwned model_owned = model as ICubeXModelOwned; SetGroupProperties(model_owned, model_over); operation_add.AddExistingModel(model_owned); } else { if (args.Effects == DragDropEffects.Copy) { ICubeXModelOwned model_owned = model.Clone() as ICubeXModelOwned; SetGroupProperties(model_owned, model_over); operation_add.AddExistingModel(model_owned); } } } } } return(false); }