private void AddGroupsRecursive(MenuDefinitionBase menu, StandardMenuItem menuModel) { var groups = _menuItemGroups .Where(x => x.Parent == menu) .Where(x => !_excludeMenuItemGroups.Contains(x)) .OrderBy(x => x.SortOrder) .ToList(); for (int i = 0; i < groups.Count; i++) { var group = groups[i]; var menuItems = _menuItems .Where(x => x.Group == group) .Where(x => !_excludeMenuItems.Contains(x)) .OrderBy(x => x.SortOrder); foreach (var menuItem in menuItems) { var menuItemModel = (menuItem.CommandDefinition != null) ? new CommandMenuItem(_commandService.GetCommand(menuItem.CommandDefinition), menuModel) : (StandardMenuItem)new TextMenuItem(menuItem); AddGroupsRecursive(menuItem, menuItemModel); menuModel.Add(menuItemModel); } if (i < groups.Count - 1 && menuItems.Any()) menuModel.Add(new MenuItemSeparator()); } }
public TextMenuItem(MenuDefinitionBase menuDefinition) { _menuDefinition = menuDefinition; }