Esempio n. 1
0
 protected override void OnDrop(DragEventArgs e)
 {
     string[] ids = (e.Data.GetData(DataFormats.Text) as string ?? string.Empty).Split('|');
     e.Handled = true;
     if (ids.Length == 2)
     {
         CsgNodeWrapper wrapper = Node.Repository.GetWrapperById(ids[0]);
         if (e.Effects == DragDropEffects.Move)
         {
             CsgGroupWrapper parent = Node.Repository.GetWrapperById(ids[1]) as CsgGroupWrapper;
             if (wrapper != null && parent != null)
             {
                 CsgNodeTreeViewItem item = this;
                 while (item != null)
                 {
                     if (item.Node == wrapper)
                     {
                         return;
                     }
                     item = item.Parent as CsgNodeTreeViewItem;
                 }
                 if (parent.RemoveChild(wrapper))
                 {
                     if (!Group.AddChild(wrapper))
                     {
                         parent.AddChild(wrapper);
                     }
                 }
                 IsSelected = true;
             }
         }
         else if (e.Effects == DragDropEffects.Link)
         {
             if (wrapper != null)
             {
                 Group.AddChild(wrapper);
                 IsSelected = true;
             }
         }
     }
     base.OnDrop(e);
 }
 private void RecursiveDelete(CsgGroupWrapper group)
 {
     if (group == null)
     {
         return;
     }
     if (group.ReferenceCount > 0)
     {
         return;
     }
     if (group.IsObjectRoot)
     {
         return;
     }
     group.Repository.RemoveNode(group);
     foreach (var item in group.Children.ToArray())
     {
         group.RemoveChild(item);
         RecursiveDelete(item as CsgGroupWrapper);
     }
 }