分享

DockPanel

 昵称50150 2008-09-08
protected override Size ArrangeOverride(Size arrangeSize)
{
    UIElementCollection internalChildren = base.InternalChildren;
    int count = internalChildren.Count;
    int num2 = count - (this.LastChildFill ? 1 : 0);
    double x = 0.0;
    double y = 0.0;
    double num5 = 0.0;
    double num6 = 0.0;
    for (int i = 0; i < count; i++)
    {
        UIElement element = internalChildren[i];
        if (element != null)
        {
            Size desiredSize = element.DesiredSize;
            Rect finalRect = new Rect(x, y, Math.Max((double) 0.0, (double) (arrangeSize.Width - (x + num5))), Math.Max((double) 0.0, (double) (arrangeSize.Height - (y + num6))));
            if (i < num2)
            {
                switch (GetDock(element))
                {
                    case Dock.Left:
                        x += desiredSize.Width;
                        finalRect.Width = desiredSize.Width;
                        break;
                    case Dock.Top:
                        y += desiredSize.Height;
                        finalRect.Height = desiredSize.Height;
                        break;
                    case Dock.Right:
                        num5 += desiredSize.Width;
                        finalRect.X = Math.Max((double) 0.0, (double) (arrangeSize.Width - num5));
                        finalRect.Width = desiredSize.Width;
                        break;
                    case Dock.Bottom:
                        num6 += desiredSize.Height;
                        finalRect.Y = Math.Max((double) 0.0, (double) (arrangeSize.Height - num6));
                        finalRect.Height = desiredSize.Height;
                        break;
                }
            }
            element.Arrange(finalRect);
        }
    }
    return arrangeSize;
}
protected override Size MeasureOverride(Size constraint)
{
    UIElementCollection internalChildren = base.InternalChildren;
    double num = 0.0;
    double num2 = 0.0;
    double num3 = 0.0;
    double num4 = 0.0;
    int num5 = 0;
    int count = internalChildren.Count;
    while (num5 < count)
    {
        UIElement element = internalChildren[num5];
        if (element != null)
        {
            Size availableSize = new Size(Math.Max((double) 0.0, (double) (constraint.Width - num3)), Math.Max((double) 0.0, (double) (constraint.Height - num4)));
            element.Measure(availableSize);
            Size desiredSize = element.DesiredSize;
            switch (GetDock(element))
            {
                case Dock.Left:
                case Dock.Right:
                    num2 = Math.Max(num2, num4 + desiredSize.Height);
                    num3 += desiredSize.Width;
                    break;
                case Dock.Top:
                case Dock.Bottom:
                    num = Math.Max(num, num3 + desiredSize.Width);
                    num4 += desiredSize.Height;
                    break;
            }
        }
        num5++;
    }
    num = Math.Max(num, num3);
    return new Size(num, Math.Max(num2, num4));
}
 
 

 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多