내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

FrameworkElement.MeasureOverride 메서드

2013-12-13

Windows Phone 레이아웃의 측정 처리 단계에 대한 동작을 제공합니다. 클래스는 이 메서드를 재정의하여 자체 측정 처리 단계 동작을 정의할 수 있습니다.

Namespace:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)

protected virtual Size MeasureOverride(
	Size availableSize
)

매개 변수

availableSize
형식: System.Windows.Size
이 개체가 자식 개체에 할당할 수 있는 사용 가능 크기입니다. 사용할 수 있는 콘텐츠에 맞게 개체의 크기가 조정됨을 나타내는 값으로 Infinity(Double.PositiveInfinity)를 지정할 수 있습니다.

반환 값

형식: System.Windows.Size
이 개체가 자식 개체에 할당된 크기 계산이나 고정 컨테이너 크기와 같은 기타 고려 사항을 기반으로 레이아웃 도중 필요한 것으로 결정하는 크기입니다.

이 메서드에는 대부분의 Windows Phone FrameworkElement 클래스에 대해 기본 제공 레이아웃을 수행하는 기본 구현이 있습니다.

MeasureOverride는 내부 레이아웃 논리 또는 응용프로그램 코드에서 해당 메서드를 호출할 때마다 Measure에 대한 추가 구현을 제공합니다. 배포 가능한 콘텐츠 컨트롤을 생성하는 경우 MeasureOverride 논리는 컨트롤의 특정 측정 처리 단계 레이아웃 논리를 정의합니다.

상속자 참고 사항

Windows Phone의 경우 레이아웃에서의 요소 크기 조정 및 배치 작업이 측정 처리 단계와 정렬 처리 단계의 두 단계로 나뉘어 수행됩니다. 이 방법에 대해서는 Windows Phone의 레이아웃 항목에서 자세히 설명합니다.

MeasureOverride를 재정의하여 Windows Phone 레이아웃 시스템에 참여하는 클래스의 사용자 지정 레이아웃 크기 지정 동작을 구현합니다. 구현에서 다음 작업이 수행되어야 합니다.

  • 레이아웃의 일부인 클래스의 특정 자식 개체 컬렉션을 반복하고 각 자식 개체에 대해 Measure를 호출합니다.

  • 각 자식에 대해 DesiredSize를 즉시 가져옵니다. 이 항목은 Measure를 호출한 후 속성으로 설정됩니다.

  • 자식 개체에 필요한 크기의 현재 측정값을 기준으로 원하는 부모의 순수 크기를 계산합니다.

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

이 프로세스 중에 자식 개체에서 초기 availableSize보다 더 큰 DesiredSize 크기를 반환하여 자식 개체에 공간이 더 필요함을 나타낼 수 있습니다. 이 문제는 스크롤 가능 영역을 사용하거나, 부모 컨트롤의 크기를 조정하거나, 스택 순서 지정 방법을 설정하거나, 레이아웃 컨테이너의 의도된 기능에 따라 달라질 수 있는 콘텐츠 측정 또는 정렬 솔루션을 원하는 개수만큼 설정하여 고유한 구현에서 처리할 수 있습니다.

다음 예제에서는 MeasureOverride를 구현하여 사용자 지정 패널 구현에 대한 측정 처리 단계 논리를 사용자 지정합니다. 특히 코드의 다음 측면을 확인합니다.

  • 자식에 대해 반복됩니다.

  • 패널 논리에서 자식 수를 처리하는 방법 및 알려진 해당 크기 제한을 기반으로 하는 Size를 사용하여 각 자식에 대해 Measure를 호출합니다.

  • 해당 크기를 반환합니다. 이 경우 이 단순한 패널은 치수를 집계할 때 계산된 크기 대신 고정 크기를 반환합니다.


// First measure all children and return available size of panel
protected override Size MeasureOverride(Size availableSize)
{

    // Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    int i =0;
    foreach (FrameworkElement child in Children)
    {
        if (i < 9)
        {
            child.Measure(new Size(100, 100));
        }
        else
        {
            child.Measure(new Size(0, 0));
        }

        i++;
    }


    // return the size available to the whole panel, which is 300x300
    return new Size(300,300);
}


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

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

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