Пример #1
0
        public IEnumerable <CommandBarItemDefinition> GetSingleSubDefinitions(CommandBarDefinitionBase menuDefinition, IReadOnlyList <CommandBarGroupDefinition> groups,
                                                                              Func <CommandBarGroupDefinition, IReadOnlyList <CommandBarItemDefinition> > items,
                                                                              CommandBarCreationOptions options = CommandBarCreationOptions.DisplaySeparatorsOnlyIfGroupNotEmpty)
        {
            var list = new List <CommandBarItemDefinition>();

            groups = groups.Where(x => x.Items.Any(y => y.IsVisible))
                     .OrderBy(x => x.SortOrder)
                     .ToList();
            for (var i = 0; i < groups.Count; i++)
            {
                var itemList = items.Invoke(groups[i]).ToList();
                if (i > 0 && i <= groups.Count - 1)
                {
                    if (options == CommandBarCreationOptions.DisplaySeparatorsOnlyIfGroupNotEmpty)
                    {
                        if (itemList.Any(x => x.IsVisible))
                        {
                            var separatorDefinition = CommandBarSeparatorDefinition.SeparatorDefinition;
                            separatorDefinition.Group = groups[i - 1];
                            list.Add(separatorDefinition);
                        }
                    }
                    else
                    {
                        var separatorDefinition = CommandBarSeparatorDefinition.SeparatorDefinition;
                        separatorDefinition.Group = groups[i - 1];
                        list.Add(separatorDefinition);
                    }
                }
                list.AddRange(itemList);
            }
            return(list);
        }
Пример #2
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the single sub definitions.
        /// </summary>
        /// <param name="menuDefinition">The menu definition.</param>
        /// <param name="options">The options.</param>
        /// <returns></returns>
        public IEnumerable <CommandBarItemDefinition> GetSingleSubDefinitions(CommandBarDefinitionBase menuDefinition,
                                                                              CommandBarCreationOptions options = CommandBarCreationOptions.DisplaySeparatorsOnlyIfGroupNotEmpty)
        {
            var host   = IoC.Get <ICommandBarDefinitionHost>();
            var groups = host.ItemGroupDefinitions.Where(x => x.Parent == menuDefinition)
                         .Where(x => !host.ExcludedItemDefinitions.Contains(x))
                         .Where(x => x.Items.Any(y => y.IsVisible))
                         .OrderBy(x => x.SortOrder)
                         .ToList();

            return(GetSingleSubDefinitions(menuDefinition, groups, group =>
            {
                return host.ItemDefinitions.Where(x => x.Group == group)
                .Where(x => !host.ExcludedItemDefinitions.Contains(x))
                .OrderBy(x => x.SortOrder).ToList();
            }));


            //var list = new List<CommandBarItemDefinition>();
            //var host = IoC.Get<ICommandBarDefinitionHost>();

            //var groups = host.ItemGroupDefinitions.Where(x => x.Parent == menuDefinition)
            //    .Where(x => !host.ExcludedItemDefinitions.Contains(x))
            //    .Where(x => x.Items.Any(y => y.IsVisible))
            //    .OrderBy(x => x.SortOrder)
            //    .ToList();
            //for (var i = 0; i < groups.Count; i++)
            //{
            //    var group = groups[i];
            //    var menuItems = host.ItemDefinitions.Where(x => x.Group == group)
            //        .Where(x => !host.ExcludedItemDefinitions.Contains(x))
            //        .OrderBy(x => x.SortOrder);
            //    if (i > 0 && i <= groups.Count - 1)
            //    {
            //        if (options == CommandBarCreationOptions.DisplaySeparatorsOnlyIfGroupNotEmpty)
            //        {
            //            if (menuItems.Any(x => x.IsVisible))
            //            {
            //                var separatorDefinition = CommandBarSeparatorDefinition.SeparatorDefinition;
            //                separatorDefinition.Group = groups[i - 1];
            //                list.Add(separatorDefinition);
            //            }
            //        }
            //        else
            //        {
            //            var separatorDefinition = CommandBarSeparatorDefinition.SeparatorDefinition;
            //            separatorDefinition.Group = groups[i - 1];
            //            list.Add(separatorDefinition);
            //        }
            //    }
            //    list.AddRange(menuItems);
            //}
            //return list;
        }