private static void BuildParts(IUIElementAdapter parent,
                                       IEnumerable <MenuItemDescriptor> descriptors,
                                       string addInTreePath,
                                       ICommandRegister register)
        {
            //try
            //{
            descriptors = descriptors.OrderBy(c => c.OrderNumber);
            foreach (MenuItemDescriptor descriptor in descriptors)
            {
                //System.Diagnostics.Debug.WriteLine(descriptor.Codon.ToString());
                object uiElement = CreateMenuItemFromDescriptor(descriptor, addInTreePath, register);

                object uiElementCreated = parent.Add(uiElement);
                InitializeUIElement(descriptor, uiElementCreated);
                var children = descriptor.SubItems;
                if (children != null)
                {
                    var subDescriptors = children.Cast <MenuItemDescriptor>();
                    if (!subDescriptors.Any())
                    {
                        continue;
                    }
                    var uiElementAapter = GetUIElementAdapter(uiElement);
                    BuildParts(uiElementAapter, subDescriptors, addInTreePath + "/" + descriptor.Codon.Id, register);
                }
            }
            //}
            //catch (Exception ex)
            //{
            //    throw ex;
            //}
        }
        /// <summary>
        /// Adds an element to the site.
        /// </summary>
        /// <typeparam name="TElement">The type of the element to be added.</typeparam>
        /// <param name="uiElement">The element to be added.</param>
        /// <returns>The added element. The adapter may return a different element than was
        /// passed; in this case, the returned element is the new element provided by the
        /// adapter.</returns>
        public TElement Add <TElement>(TElement uiElement)
        {
            TElement element = (TElement)adapter.Add(uiElement);

            items.Add(element);
            return(element);
        }
 private static void BuildParts(IUIElementAdapter parent, IEnumerable <NavItemDescriptor> descriptors)
 {
     foreach (NavItemDescriptor descriptor in descriptors)
     {
         object uiElement = CreateMenuItemFromDescriptor(descriptor);
         parent.Add(uiElement);
         var children = descriptor.SubItems;
         if (children != null)
         {
             var subDescriptors = children.Cast <NavItemDescriptor>();
             if (!subDescriptors.Any())
             {
                 continue;
             }
             var uiElementAapter = GetUIElementAdapter(uiElement);
             BuildParts(uiElementAapter, subDescriptors);
         }
     }
 }