확장 최소화
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

FrameworkElement.MeasureOverride 메서드

파생된 클래스에서 재정의 되는 경우 자식 요소에 필요한 레이아웃 크기를 측정 하 고 크기를 결정에서 FrameworkElement-클래스를 파생 합니다.

네임스페이스:  System.Windows
어셈블리:  PresentationFramework(PresentationFramework.dll)
protected virtual Size MeasureOverride(
	Size availableSize
)

매개 변수

availableSize
형식: System.Windows.Size
이 요소에서 자식 요소에 할당할 수 있는 크기입니다. 무한대 요소 콘텐츠에 사용할 수를 크기 수 있음을 나타내려면 값으로 지정할 수 있습니다.

반환 값

형식: System.Windows.Size
이 요소를 결정 하는 크기 자식 요소 크기 계산을 기반으로 레이아웃 도중 필요한.

재정의 MeasureOverride 이 참여 하 여 요소에 대 한 사용자 지정 레이아웃 크기 조정 동작을 구현 하는 WPF(Windows Presentation Foundation) 레이아웃 시스템입니다. 구현 다음을 수행 합니다.

  1. 레이아웃, 호출에 속하는 자식 개체의 특정 컬렉션 요소가 반복 Measure 각 자식 요소입니다.

  2. 즉시 얻을 DesiredSize 자식 (이 후 속성으로 설정 된 Measure 라고).

  3. Net 원하는 크기를 부모 자식 요소의 측정 시를 기준으로 계산 해야 합니다.

반환 값을 MeasureOverride 입력 현재 요소의 부모 요소에 대 한 측정 됩니다 원하는 요소의 원하는 크기 여야 합니다. 페이지의 루트 요소에 도달할 때까지 레이아웃 시스템을 통해이 같은 프로세스를 계속 합니다.

이 프로세스 중에 자식 요소를 더 큰 반환할 수 있습니다 DesiredSize 크기 보다는 초기 availableSize 공간을 더 하려고 자식 요소를 나타냅니다. 이 고유한 구현에서 스크롤 가능한 영역을 몇 가지 방법으로 누적 순서 또는 콘텐츠 측정 또는 정렬을 위한 솔루션을 구축 하 여 부모 컨트롤을 조정 하 여 도입 하 여 처리할 수 있습니다.

중요중요

요소가 있어야 호출할 Measure 이 과정 중에 각 자식에 그렇지 않으면 자식 요소가 올바르게 크기의 정렬 또는 없습니다.

상속자 참고 사항

다음 코드 컴파일 되지 않은 이러한 구현 패턴을 보여 줍니다. VisualChildren열거 가능한 컬렉션 속성을의 자식 요소를 직접 정의 해야 나타냅니다. 속성이 원하는 이름을 지정할 수 있습니다. VisualChildren이 예제에 대 한 자리 표시자 이름입니다 VisualChildren 하지 않습니다는 API 의해 제공 된 WPF 또는 명명 패턴의 일부.


protected override Size MeasureOverride(Size availableSize)
{
    Size desiredSize = new Size();
    foreach (UIElement child in VisualChildren)
    {
        child.Measure(availableSize);
        // do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
        // if greater than availableSize, must decide what to do and which size to return
    }
    // desiredSize = ... computed sum of children's DesiredSize ...;
    // IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
    // PositiveInfinity might be an availableSize input; this means that the parent does not care about sizing
    return desiredSize;
}


이 예제에서는 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
    }
}


.NET Framework

4.5, 4, 3.5, 3.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.
이 정보가 도움이 되었습니까?
(1500자 남음)

커뮤니티 추가 항목

추가
© 2013 Microsoft. All rights reserved.