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); }