public override void CreateRecursive <T>(ref T itemsControl, CommandBarDefinitionBase itemDefinition, IReadOnlyList <CommandBarGroupDefinition> groups, Func <CommandBarGroupDefinition, IReadOnlyList <CommandBarItemDefinition> > itemFunc) { var host = IoC.Get <ICommandBarDefinitionHost>(); var topItem = GetSingleSubDefinitions(itemDefinition, groups, itemFunc); foreach (var item in topItem) { MenuItem menuItemControl; if (item.CommandDefinition is CommandListDefinition) { menuItemControl = new DummyListMenuItem(item, itemsControl); } else { menuItemControl = new MenuItem(item); } if (item is MenuDefinition) { groups = host.ItemGroupDefinitions.Where(x => x.Parent == item) .Where(x => !host.ExcludedItemDefinitions.Contains(x)) .Where(x => x.Items.Any(y => y.IsVisible)) .OrderBy(x => x.SortOrder) .ToList(); CreateRecursive(ref menuItemControl, item, groups, itemFunc); } itemsControl.Items.Add(menuItemControl); } }
/// <summary> /// Creates a sub-tree of an <see cref="T:System.Windows.Controls.ItemsControl" /> recursively /// </summary> /// <typeparam name="T">The type of the <see cref="T:System.Windows.Controls.ItemsControl" /></typeparam> /// <param name="itemsControl">The <see cref="T:System.Windows.Controls.ItemsControl" /> that should be filled</param> /// <param name="itemDefinition">The data model of the current item</param> /// <inheritdoc /> public override void CreateRecursive <T>(ref T itemsControl, CommandBarDefinitionBase itemDefinition) { var topItem = GetSingleSubDefinitions(itemDefinition); foreach (var item in topItem) { MenuItem menuItemControl; if (item.CommandDefinition is CommandListDefinition) { menuItemControl = new DummyListMenuItem(item, itemsControl); } else { menuItemControl = new MenuItem(item); } if (item is MenuDefinition) { CreateRecursive(ref menuItemControl, item); } itemsControl.Items.Add(menuItemControl); } }