정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

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.ArrangeOverride, Page.ArrangeOverrideControl.ArrangeOverride가 있습니다.

이 예제에서는 Panel 요소의 기본 레이아웃 동작을 재정의하고 Panel에서 파생된 사용자 지정 레이아웃 요소를 만드는 방법을 보여 줍니다.

예제에서는 두 개의 하드 코드된 x 및 y 좌표에 따라 자식 요소를 배치하는 PlotPanel이라는 간단한 사용자 지정 Panel 요소를 정의합니다. 이 예제에서 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