WPF椭圆大小

时间:2012-08-12 22:11:42

标签: wpf stackpanel ellipse

我在这里找到了这个问题:How to populate a WPF grid based on a 2-dimensional array我希望使用标记的解决方案。它似乎工作得很好,但有一个问题,问题是我使用省略号来显示我的数据。所以每个项目都等于一个椭圆。

这就是问题所在:省略号请求测量只有x = 0,y = 0的大小。 所以我的问题是没有显示任何内容。所以我尝试创建一个自定义Stackpanel:

public class StretchStackPanel : StackPanel
{
    protected override Size MeasureOverride(Size constraint)
    {
        Size result = constraint;

        result.Width = result.Width == Double.PositiveInfinity ? Double.MaxValue : result.Width;
        result.Height = result.Height == Double.PositiveInfinity ? Double.MaxValue : result.Height;

        if (this.Orientation == System.Windows.Controls.Orientation.Horizontal)
            result.Height = result.Width / InternalChildren.Count;


        return result;
    }

    protected override Size ArrangeOverride(Size arrangeSize)
    {
        var size = base.ArrangeOverride(arrangeSize);

        double elementLength;
        if (Orientation == System.Windows.Controls.Orientation.Horizontal)
            elementLength = size.Width / InternalChildren.Count;
        else
            elementLength = size.Height / InternalChildren.Count;

        double current = 0;
        foreach (UIElement e in InternalChildren)
        {
            Rect result;
            if (Orientation == System.Windows.Controls.Orientation.Horizontal)
            {
                result = new Rect(current, 0, elementLength, size.Height);
                current += result.Width;
            }
            else
            {
                result = new Rect(0, current, size.Width, elementLength);
                current += result.Height;
            }

            e.Arrange(result);
        }

        return size;
    }
}

但是有一种非常奇怪的行为。物品之间的边距非常小,似乎是随机的。如果我调整大小,你可以看到它们移动。

这里有两个截图:

enter image description here  enter image description here

我还尝试使用仅使用列而不是Stackpanel的Uniformgrid,并使用Itemscontrol周围的ViewBox设置具有固定高度的itemstyle。

0 个答案:

没有答案