private void MainNodeDragOver(object sender, DragEventArgs e) { e.Handled = true; var dragingItemViewModel = (StyleItemViewModel)e.Data.GetData(typeof(StyleItemViewModel)); var currentItemViewModel = ((StyleBuilderViewModel)(((Grid)sender)).DataContext); var dragingItem = dragingItemViewModel.StyleItem; var currentItem = currentItemViewModel.RootStyleItem.StyleItem; var dragingItemParent = dragingItem.Parent; var currentItemParent = currentItem.Parent; if (dragingItem != null && currentItem != null && dragingItem != currentItem && !IsParent(currentItem, dragingItem)) { if (currentItem.CanContainStyleItem(dragingItem)) { dragingItemParent.Children.Remove(dragingItem); currentItem.Children.Insert(0, dragingItem); dragingItemViewModel = StyleItemViewModel.FindStyleItemViewModel(currentItemViewModel.RootStyleItem.StyleItemViewModels, dragingItem); } } if (dragingItemViewModel != null) { dragingItemViewModel.IsSelected = true; } }
private void TreeViewItemDragOver(object sender, DragEventArgs e) { e.Handled = true; var dragingItemViewModel = (StyleItemViewModel)e.Data.GetData(typeof(StyleItemViewModel)); var currentItemViewModel = ((StyleItemViewModel)(((Grid)sender)).DataContext); var dragingItem = dragingItemViewModel.StyleItem; var currentItem = currentItemViewModel.StyleItem; var dragingItemParent = dragingItem.Parent; var currentItemParent = currentItem.Parent; if (dragingItem != null && currentItem != null && dragingItem != currentItem && !IsParent(currentItem, dragingItem)) { if (currentItem.CanContainStyleItem(dragingItem)) { dragingItemParent.Children.Remove(dragingItem); currentItem.Children.Insert(0, dragingItem); dragingItemViewModel = StyleItemViewModel.FindStyleItemViewModel(currentItemViewModel.ParentViewModel.StyleItemViewModels, dragingItem); } else if (dragingItemParent == currentItemParent) { var dragingIndex = dragingItemParent.Children.IndexOf(dragingItem); var currentIndex = dragingItemParent.Children.IndexOf(currentItem); dragingItemParent.Children.Move(dragingIndex, currentIndex); } else { if (currentItemParent is StyleLayerListItem && ((StyleLayerListItem)currentItemParent).CanContainStyleItem(dragingItem)) { dragingItemParent.Children.Remove(dragingItem); var currentIndex = currentItemParent.Children.IndexOf(currentItem); currentItemParent.Children.Insert(currentIndex, dragingItem); dragingItemViewModel = StyleItemViewModel.FindStyleItemViewModel(currentItemViewModel.ParentViewModel.StyleItemViewModels, dragingItem); } else { e.Effects = DragDropEffects.None; } } if (dragingItemViewModel != null) { dragingItemViewModel.IsSelected = true; } } }