UIElement.Measure(Size) 메서드

정의

UIElementDesiredSize를 업데이트합니다. 일반적으로 레이아웃 자식에 대한 사용자 지정 레이아웃을 구현하는 개체는 자체 MeasureOverride 구현에서 이 메서드를 호출하여 재귀 레이아웃 업데이트를 형성합니다.

UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.UIElement.Measure(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조).

public:
 virtual void Measure(Size availableSize) = Measure;
void Measure(Size const& availableSize);
public void Measure(Size availableSize);
function measure(availableSize)
Public Sub Measure (availableSize As Size)

매개 변수

availableSize
Size

부모가 자식 개체에 할당할 수 있는 사용 가능한 공간입니다. 자식 개체는 사용 가능한 것보다 더 큰 공간을 요청할 수 있습니다. 특정 컨테이너에서 스크롤 또는 기타 크기 조정 동작이 가능한 경우 제공된 크기를 수용할 수 있습니다.

예제

이 예제에서는 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);
}
'First measure all children and return available size of panel 
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
    'Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    Dim i As Integer = 0
    For Each child As FrameworkElement In Children
        If i < 9 Then
            child.Measure(New Size(100, 100))
        Else
            child.Measure(New Size(0, 0))
        End If
        i += 1
    Next
    'return the size available to the whole panel, which is 300x300 
    Return New Size(300, 300)
End Function

설명

Measure 호출은 잠재적으로 해당 특정 클래스의 구현에 MeasureOverride 도달합니다. 그렇지 않으면 대부분의 FrameworkElement 클래스에는 Measure에 대한 암시적 기본 레이아웃 동작이 있습니다.

availableSize 는 0에서 무한까지 임의의 숫자일 수 있습니다. 레이아웃에 참여하는 요소는 지정된 availableSize 에 필요한 최소 Size 값을 반환해야 합니다.

XAML UI의 초기 레이아웃 위치 계산은 측정값 호출 및 Arrange 호출 순서로 구성됩니다. 측정값 호출 중에 레이아웃 시스템은 availableSize 측정을 사용하여 요소의 크기 요구 사항을 결정합니다. 호출하는 Arrange 동안 레이아웃 시스템은 요소 경계 상자의 크기와 위치를 마무리합니다.

레이아웃이 처음 생성되면 항상 이전에 Arrange발생하는 Measure 호출이 있습니다. 그러나 첫 번째 레이아웃이 통과한 Arrange 후 앞에 측정값 없이 호출이 발생할 수 있습니다. 이는 영향을 주는 속성만 Arrange 변경(예: 맞춤)하거나 부모가 Measure 없이 수신할 Arrange 때 발생할 수 있습니다.

측정값 호출은 모든 Arrange 정보를 자동으로 무효화합니다. 레이아웃 업데이트는 일반적으로 비동기적으로 발생합니다(레이아웃 시스템에 의해 결정되는 시간에). 요소 크기 조정(예: Width)에 영향을 주는 속성의 변경 내용을 요소에 즉시 반영하지 않을 수 있습니다.

적용 대상

추가 정보