internal List <IModelGroupable> GetGroupMembers(IModelGroupable item)
        {
            IEnumerable <IModelGroupable> list = designerCanvas.Children.OfType <IModelGroupable>();
            IModelGroupable rootItem           = GetRoot(list, item);

            return(GetGroupMembers(list, rootItem));
        }
 private IModelGroupable GetRoot(IEnumerable <IModelGroupable> list, IModelGroupable node)
 {
     if (node == null || node.ParentID == Guid.Empty)
     {
         return(node);
     }
     else
     {
         foreach (IModelGroupable item in list)
         {
             if (item.ID == node.ParentID)
             {
                 return(GetRoot(list, item));
             }
         }
         return(null);
     }
 }
        private List <IModelGroupable> GetGroupMembers(IEnumerable <IModelGroupable> list, IModelGroupable parent)
        {
            List <IModelGroupable> groupMembers = new List <IModelGroupable>();

            groupMembers.Add(parent);

            var children = list.Where(node => node.ParentID == parent.ID);

            foreach (IModelGroupable child in children)
            {
                groupMembers.AddRange(GetGroupMembers(list, child));
            }

            return(groupMembers);
        }
        internal IModelGroupable GetGroupRoot(IModelGroupable item)
        {
            IEnumerable <IModelGroupable> list = designerCanvas.Children.OfType <IModelGroupable>();

            return(GetRoot(list, item));
        }