当前位置: 首页>>代码示例>>C#>>正文


C# Size.Count方法代码示例

本文整理汇总了C#中System.Windows.Size.Count方法的典型用法代码示例。如果您正苦于以下问题:C# Size.Count方法的具体用法?C# Size.Count怎么用?C# Size.Count使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Windows.Size的用法示例。


在下文中一共展示了Size.Count方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ArrangeOverride

        /// <summary>
        /// Positionates each child in the available space of the NavigationBar depending on the expanding states.
        /// </summary>
        /// <param name="arrangeSize">The maximum possible space given by the parent control.</param>
        /// <returns>The calculated needed space in sum of all available child controls.</returns>
        protected override Size ArrangeOverride(Size arrangeSize)
        {
            var sizes = new Size[InternalChildren.Count];
            for (var i = 0; i < InternalChildren.Count; ++i)
            {
                var element = InternalChildren[i];
                if (element == null)
                    continue;

                sizes[i] = element.DesiredSize;
                var isSharing = GetIsExpanded(element);
                switch (Orientation)
                {
                    case Orientation.Horizontal:
                        if (isSharing)
                            sizes[i].Width = 0;
                        sizes[i].Height = arrangeSize.Height;
                        break;
                    case Orientation.Vertical:
                        if (isSharing)
                            sizes[i].Height = 0;
                        sizes[i].Width = arrangeSize.Width;
                        break;
                }
            }

            var heightLeft = arrangeSize.Height;
            var widthLeft = arrangeSize.Width;
            for (var i = 0; i < InternalChildren.Count; ++i)
            {
                var element = InternalChildren[i];
                if (element == null)
                    continue;

                var isSharing = GetIsExpanded(element);
                if (!isSharing && Orientation == Orientation.Horizontal)
                    widthLeft -= sizes[i].Width;
                else if (!isSharing && Orientation == Orientation.Vertical)
                    heightLeft -= sizes[i].Height;
            }

            double heightItemsCout = sizes.Count(i => i.Height == 0);
            double widthItemsCout = sizes.Count(i => i.Width == 0);

            var missingItemHeight = heightLeft / Math.Max(heightItemsCout, 1);
            var missingItemWidth = widthLeft / Math.Max(widthItemsCout, 1);

            for (var i = 0; i < InternalChildren.Count; ++i)
            {
                var element = InternalChildren[i];
                if (element == null)
                    continue;

                if (sizes[i].Height == 0)
                    sizes[i].Height = missingItemHeight;
                if (sizes[i].Width == 0)
                    sizes[i].Width = missingItemWidth;
            }

            var x = 0.0;
            var y = 0.0;
            for (var i = 0; i < InternalChildren.Count; ++i)
            {
                var element = InternalChildren[i];
                if (element == null)
                    continue;

                var size = sizes[i];
                var position = new Rect(x, y, size.Width, size.Height);
                element.Arrange(position);

                if (Orientation == Orientation.Horizontal)
                    x += size.Width;
                else
                    y += size.Height;
            }

            return arrangeSize;
        }
开发者ID:bisato,项目名称:DW.WPFToolkit,代码行数:84,代码来源:NavigationBarPanel.cs


注:本文中的System.Windows.Size.Count方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。