Пример #1
0
        public static RibbonControlGroupCollection GroupItems(IList <RibbonItem> ribbonItems, Func <RibbonItem, RibbonItemStyle> itemStyleProvider)
        {
            var actualItemStyleProvider = itemStyleProvider ?? GetActualItemStyle;
            var items = ribbonItems;
            var list  = new RibbonControlGroupCollection();

            var group = new RibbonItemGroup();

            for (var i = items.Count - 1; i >= 0; i--)
            {
                var item      = items[i];
                var itemStyle = CoerceItemStyle(item, actualItemStyleProvider(item));

                if (group.Add(item, itemStyle))
                {
                    continue;
                }

                list.Add(group);
                group = new RibbonItemGroup();
                group.Add(item, itemStyle);
            }

            if (group.IsEmpty == false)
            {
                list.Add(group);
            }

            list.Reverse();

            return(list);
        }
Пример #2
0
        private static double ArrangeControlGroup(RibbonItemGroup itemGroup, Size finalSize, double offset)
        {
            var orientation = itemGroup.Orientation;

            switch (orientation)
            {
            case Orientation.Vertical:
                var lineWidth = itemGroup.EnumerateItems().Max(i => i.DesiredSize.Width);
                return(offset + PanelHelper.ArrangeStackLine(itemGroup.EnumerateItems(), orientation, offset, 0, lineWidth, finalSize.Height / 3).Indirect);

            case Orientation.Horizontal:
                return(offset + PanelHelper.ArrangeStackLine(itemGroup.EnumerateItems(), orientation, 0, offset, finalSize.Height, null).Direct);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #3
0
 private static Size MeasureControlGroup(RibbonItemGroup itemGroup, Size measureItemSize, bool forceMeasure)
 {
     return(itemGroup.MeasureGroup(measureItemSize, forceMeasure));
 }