要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语
本文档已存档,并且将不进行维护。

FrameworkElement.ArrangeOverride 方法

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

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

protected virtual Size ArrangeOverride(
	Size finalSize
)

参数

finalSize
类型:System.Windows.Size
父级中此元素应用来排列自身及其子元素的最终区域。

返回值

类型:System.Windows.Size
所用的实际大小。

对继承者的说明

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

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

This example shows how to override the default layout behavior of the Panel element and create custom layout elements that are derived from Panel.

The example defines a simple custom Panel element called PlotPanel, which positions child elements according to two hard-coded x- and y-coordinates. In this example, x and y are both set to 50; therefore, all child elements are positioned at that location on the x and y axes.

To implement custom Panel behaviors, the example uses the MeasureOverride and ArrangeOverride methods. Each method returns the Size data that is necessary to position and render child elements.


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
    }
}


.NET Framework

受以下版本支持:4、3.5、3.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

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