Fluent.MenuPanel.UpdateMenuSizes C# (CSharp) Method

UpdateMenuSizes() private method

private UpdateMenuSizes ( ) : void
return void
        internal void UpdateMenuSizes()
        {
            if (Children.Count > 0)
            {
                Width = double.NaN;
                //Height = double.NaN;
                double minWidth = 0;
                double minHeight = 0;
                double maxMenuWidth = 0;
                for (int i = 0; i < Children.Count; i++)
                {
                    FrameworkElement element = Children[i] as FrameworkElement;
                    if (element != null)
                    {
                        if ((element is MenuItem) || (element is Separator))
                        {
                            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
                            if (element is MenuItem)
                            {
                                minWidth = Math.Max(minWidth, element.MinWidth);
                                //maxMenuWidth = Math.Max(maxMenuWidth, element.DesiredSize.Width);
                            }
                            if (!double.IsPositiveInfinity(element.DesiredSize.Width)) maxMenuWidth = Math.Max(maxMenuWidth, element.DesiredSize.Width);
                            minHeight += element.DesiredSize.Height;
                        }
                        else
                        {
                            if (element is MenuPanel) element.Width = double.NaN;
                            minWidth = Math.Max(minWidth, element.MinWidth);
                            minHeight += element.MinHeight;
                        }
                    }
                }
                ResizeMinWidth = Math.Max(0, minWidth);
                ResizeMinHeight = Math.Max(0, minHeight);
                if (ResizeMinHeight!=0) MinHeight = ResizeMinHeight;
                if (ResizeMinWidth != 0) Width = Math.Max(maxMenuWidth, ResizeMinWidth);
                if (ResizeMinWidth < maxMenuWidth) ResizeMinWidth = maxMenuWidth;
                if (VisualTreeHelper.GetParent(this) is MenuPanel) Width = double.NaN;
            }
        }