내보내기(0) 인쇄
모두 확장
확장 최소화
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

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. 자식 요소의 측정값을 기준으로 원하는 부모의 순수 크기를 계산합니다.

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

이 프로세스 중에 자식 요소에서 초기 availableSize보다 더 큰 DesiredSize 크기를 반환하여 자식 요소에 공간이 더 필요함을 나타낼 수 있습니다. 그러면 사용자의 고유한 구현에서 스크롤 가능한 영역을 적용하거나, 부모 컨트롤의 크기를 조정하거나, 일부 상하형 순서 방식을 설정하거나, 콘텐츠 측정 또는 정렬을 위한 다양한 솔루션을 설정하여 이를 처리할 수 있습니다.

중요중요

요소는 이 프로세스 중에 각 자식 항목에서 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.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework 에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 다음을 참조하십시오. .NET Framework 시스템 요구 사항.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft