Esempio n. 1
0
        protected override SizeF MeasureOverride(SizeF availableSize)
        {
            if (this.ElementTree == null)
            {
                return(base.MeasureOverride(availableSize));
            }

            RadDropDownMenu            menu    = this.ElementTree.Control as RadDropDownMenu;
            RadApplicationMenuDropDown appMenu = null;

            if (menu != null && menu.OwnerElement != null && menu.OwnerElement.IsInValidState(true))
            {
                appMenu = menu.OwnerElement.ElementTree.Control as RadApplicationMenuDropDown;
            }

            if (appMenu != null)
            {
                availableSize.Width = appMenu.RightColumnWidth - 5;
            }

            foreach (RadElement element in this.Children)
            {
                RadMenuItem menuItem = element as RadMenuItem;
                if (menuItem != null)
                {
                    menuItem.Measure(availableSize);
                    leftColumnWidth      = Math.Max(leftColumnWidth, menuItem.LeftColumnElement.DesiredSize.Width);
                    rightColumnWidth     = Math.Max(rightColumnWidth, menuItem.RightColumnElement.DesiredSize.Width);
                    leftColumnMaxPadding = Math.Max(leftColumnMaxPadding, menuItem.Padding.Left + menuItem.BorderThickness.Left + menuItem.Margin.Left);
                }
            }
            leftColumnWidth = Math.Max(leftColumnWidth, LeftColumnMinWidth);

            SizeF preferredSize = base.MeasureOverride(availableSize);

            preferredSize.Width  += leftColumnWidth;
            preferredSize.Width  += this.Padding.Horizontal;
            preferredSize.Height += this.Padding.Vertical;

            if (appMenu != null)
            {
                preferredSize.Width = appMenu.RightColumnWidth - 5;
            }

            return(preferredSize);
        }
        protected override SizeF MeasureOverride(SizeF availableSize)
        {
            if (this.ElementTree == null)
            {
                return(base.MeasureOverride(availableSize));
            }
            RadDropDownMenu            control = this.ElementTree.Control as RadDropDownMenu;
            RadApplicationMenuDropDown applicationMenuDropDown = (RadApplicationMenuDropDown)null;

            if (control != null && control.OwnerElement != null && control.OwnerElement.IsInValidState(true))
            {
                applicationMenuDropDown = control.OwnerElement.ElementTree.Control as RadApplicationMenuDropDown;
            }
            if (applicationMenuDropDown != null)
            {
                availableSize.Width = (float)(applicationMenuDropDown.RightColumnWidth - 5);
            }
            foreach (RadElement child in this.Children)
            {
                RadMenuItem radMenuItem = child as RadMenuItem;
                if (radMenuItem != null)
                {
                    radMenuItem.Measure(availableSize);
                    this.leftColumnWidth      = Math.Max(this.leftColumnWidth, radMenuItem.LeftColumnElement.DesiredSize.Width);
                    this.rightColumnWidth     = Math.Max(this.rightColumnWidth, radMenuItem.RightColumnElement.DesiredSize.Width);
                    this.leftColumnMaxPadding = Math.Max(this.leftColumnMaxPadding, (float)(radMenuItem.Padding.Left + radMenuItem.BorderThickness.Left + radMenuItem.Margin.Left));
                }
            }
            this.leftColumnWidth = Math.Max(this.leftColumnWidth, (float)this.LeftColumnMinWidth);
            SizeF sizeF = base.MeasureOverride(availableSize);

            sizeF.Width  += (float)this.RightColumnPadding;
            sizeF.Width  += (float)this.Padding.Horizontal;
            sizeF.Height += (float)this.Padding.Vertical;
            if (applicationMenuDropDown != null)
            {
                sizeF.Width = (float)(applicationMenuDropDown.RightColumnWidth - 5);
            }
            return(sizeF);
        }