导出 (0) 打印
全部展开

FrameworkElement.ArrangeOverride 方法

更新:2007 年 11 月

在派生类中重写时,请为 FrameworkElement 派生类定位子元素并确定大小。

命名空间:  System.Windows
程序集:  PresentationFramework(在 PresentationFramework.dll 中)

protected virtual Size ArrangeOverride(
	Size finalSize
)
protected Size ArrangeOverride(
	Size finalSize
)
protected function ArrangeOverride(
	finalSize : Size
) : Size
不能在 XAML 中使用方法。

参数

finalSize
类型:System.Windows.Size

父级中此元素应用来排列自身及其子元素的最终区域。

返回值

类型:System.Windows.Size

所用的实际大小。

对继承者的说明:

要自定义布局处理的排列处理过程的控件作者应重写此方法。实现模式应在每个可见子元素上调用 Arrange,然后将每个子元素的最终所需大小作为 finalRect 参数进行传递。父元素应在每个子元素上调用 Arrange,否则将不会呈现子元素。

许多派生类都提供此方法的实现。其中主要的实现包括:Window.ArrangeOverridePage.ArrangeOverrideControl.ArrangeOverride

本示例演示如何覆盖 Panel 元素的默认布局行为和创建派生自 Panel 的自定义布局元素。

本示例定义一个名为 PlotPanel 的简单的自定义 Panel 元素,该元素依照两个硬编码的 x 和 y 坐标定位子元素。在此示例中,xy 均被设置为 50;因此,所有子元素均放置在 x 和 y 轴上的该位置处。

为了实现自定义的 Panel 行为,此示例使用了 MeasureOverrideArrangeOverride 方法。每个方法均返回定位和呈现子元素所需的 Size 数据。

public class PlotPanel : Panel
{
    // Default public constructor
    public PlotPanel()
        : base()
    {
    }

    // Override the default Measure method of Panel
    protected override Size MeasureOverride(Size availableSize)
    {
        Size panelDesiredSize = new Size();

        // In our example, we just have one child. 
        // Report that our panel requires just the size of its only child.
        foreach (UIElement child in InternalChildren)
        {
            child.Measure(availableSize);
            panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
    }
    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in InternalChildren)
        {
            double x = 50;
            double y = 50;

            child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
        }
        return finalSize; // Returns the final Arranged size
    }
}


有关完整示例,请参见 创建简单自定义面板的示例

Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

.NET Framework

受以下版本支持:3.5、3.0

社区附加资源

添加
显示:
© 2014 Microsoft