示例#1
0
        void AddToMenuItemTree(MenuItem parentLevelItem, MenuItem newItem)
        {
            int level = parentLevelItem.Level + 1;

            if (newItem.Path.Length - 1 == level)
            {
                //这个节点就是加到这一层
                parentLevelItem.AddChildMenuItem(newItem);
                return;
            }

            string wantedPathLevelName = newItem.GetPathLevelName(level);
            //节点继续向下搜索
            List <MenuItem> childrenItems = parentLevelItem.ChildrenItem;

            for (int i = 0; i < childrenItems.Count; i++)
            {
                MenuItem childItem = childrenItems[i];

                if (childItem.IsEndItem)
                {
                    continue;
                }

                if (childItem.GetPathLevelName(level) == wantedPathLevelName)
                {
                    AddToMenuItemTree(childItem, newItem);
                    return;
                }
            }

            //如果没有找到对应路径,则添加路径节点
            MenuItem pathItem = new MenuItem
            {
                IsEndItem = false,
                Level     = level,
                ItemName  = wantedPathLevelName,
                Path      = newItem.GetPathRange(0, level)
            };

            parentLevelItem.AddChildMenuItem(pathItem);
            AddToMenuItemTree(pathItem, newItem);
        }