FrameworkElement.MeasureOverride(Size) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
레이아웃 주기의 "측정값" 패스에 대한 동작을 제공합니다. 클래스는 이 메서드를 재정의하여 고유한 "측정값" 전달 동작을 정의할 수 있습니다.
protected:
virtual Size MeasureOverride(Size availableSize) = MeasureOverride;
Size MeasureOverride(Size const& availableSize);
protected virtual Size MeasureOverride(Size availableSize);
function measureOverride(availableSize)
Protected Overridable Function MeasureOverride (availableSize As Size) As Size
매개 변수
- availableSize
- Size
이 개체가 자식 개체에 제공할 수 있는 사용 가능한 크기입니다. 무한대는 개체가 사용 가능한 콘텐츠에 맞게 크기가 조정됨을 나타내는 값으로 지정할 수 있습니다.
반환
자식 개체에 대해 할당된 크기를 계산하거나 고정 컨테이너 크기와 같은 다른 고려 사항에 따라 레이아웃 중에 이 개체에 필요한 크기를 결정합니다.
예제
이 예제에서는 MeasureOverride
를 구현하여 사용자 지정 패널 구현에 대한 "측정값" 통과 논리를 사용자 지정합니다. 특히 코드의 이러한 측면은 다음과 같습니다.
- 자식을 반복합니다.
- 각 자식에 대해 패널 논리가 자식 수와 알려진 자체 크기 제한을 처리하는 방법에 따라 적합한 크기를 사용하여 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);
}
설명
이 메서드에는 대부분의 FrameworkElement 파생 클래스에 대한 기본 제공 레이아웃을 수행하는 기본 구현이 있습니다.
MeasureOverride
에서는 다른 클래스에 대한 고유한 메서드를 포함하여 내부 레이아웃 논리 또는 사용자 고유의 앱 코드에 의해 Measure가 호출될 MeasureOverride
때마다 Measure에 대한 동작을 제공합니다. 템플릿 지정 컨트롤을 생성하는 경우 논리는 MeasureOverride
컨트롤의 특정 "측정값" 패스 레이아웃 논리를 정의합니다.
앱이 실행되면 요소가 레이아웃 프로세스를 통과하는 방법에 대한 일반적인 디자인은 "측정값" 패스와 "정렬" 패스의 두 단계로 나뉩니다. 레이아웃 처리의 "측정값" 패스를 사용자 지정하려는 컨트롤 작성자(또는 패널 작성자)는 를 재정 MeasureOverride
의해야 합니다. 구현은 다음을 수행해야 합니다.
- 레이아웃의 일부인 클래스의 특정 자식 개체 컬렉션을 반복하고 각 자식 개체에 대해 Measure 를 호출합니다.
- 각 자식에 대해 DesiredSize 를 즉시 가져옵니다( Measure 가 호출된 후 속성으로 설정됨).
- 자식 개체에 필요한 크기의 실행 중인 측정값에 따라 부모의 원하는 순 크기를 계산합니다.
의
MeasureOverride
반환 값은 개체의 원하는 크기여야 하며, 이 크기는 현재 개체의 부모에 대한 측정값 입력이 됩니다. 이 동일한 프로세스는 페이지/개체 트리의 루트에 도달할 때까지 레이아웃 시스템을 통해 계속됩니다. 이 프로세스 중에 자식 개체는 초기 availableSize보다 더 큰 DesiredSize 크기를 반환하여 자식 개체가 더 많은 공간을 원한다는 것을 나타낼 수 있습니다. 이는 스크롤 가능한 영역을 도입하고, 부모 컨트롤의 크기를 조정하고, 누적 순서를 설정하거나, 레이아웃 컨테이너의 의도된 기능에 따라 달라질 수 있는 콘텐츠를 측정하거나 정렬하기 위한 솔루션 수를 설정하여 사용자 고유의 구현에서 처리될 수 있습니다.