UIElement.MeasureCore(Size) 메서드

정의

파생 클래스에서 재정의되는 경우 자식 요소 콘텐츠의 크기를 고려하여 이 요소의 크기를 적절하게 조정하기 위한 측정 논리를 제공합니다.When overridden in a derived class, provides measurement logic for sizing this element properly, with consideration of the size of any child element content.

protected:
 virtual System::Windows::Size MeasureCore(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureCore (System.Windows.Size availableSize);
abstract member MeasureCore : System.Windows.Size -> System.Windows.Size
override this.MeasureCore : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureCore (availableSize As Size) As Size

매개 변수

availableSize
Size

부모 요소가 자식 요소에 할당할 수 있는 크기입니다.The available size that the parent element can allocate for the child.

반환

레이아웃에서 이 요소에 필요한 크기입니다.The desired size of this element in layout.

예제

MeasureCore의 일반적인 재정의는이 대략적인 패턴을 따릅니다 (VisualChildren라는 기본 제공 컬렉션이 없습니다. VisualChildren은 요소가 유지 관리 하는 모든 자식 컬렉션을 나타내는 자리 표시자입니다.)A typical override of MeasureCore follows this approximate pattern (there is not a built-in collection called VisualChildren; VisualChildren is a placeholder that represents whatever child collection your element maintains).

protected override Size MeasureCore(Size availableSize)
{
    foreach (UIElement child in VisualChildren)
    {
        child.Measure(availableSize);
        // call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child);
    }
    Size desired = CalculateBasedOnCache(_cache);
    return desired;
}
Protected Overrides Function MeasureCore(ByVal availableSize As Size) As Size
    For Each child As UIElement In VisualChildren
        child.Measure(availableSize)
        ' call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child)
    Next child
    Dim desired As Size = CalculateBasedOnCache(_cache)
    Return desired
End Function
  • 각 자식 요소에 대해 Measure를 호출 해야 합니다.You must call Measure on each child element.

  • 일반적으로 구현은 동일한 요소에서 MeasureCoreArrangeCore 메서드 호출 사이의 측정 정보를 캐시 해야 합니다.Generally, your implementation should cache measurement information between the MeasureCore and ArrangeCore method calls in the same element.

  • MeasureCore의 기본 구현을 호출 하는 것은 필요 하지 않지만 기본 구현에서 원하는 레이아웃 기능을 제공 하는 경우 적합할 수 있습니다.Calling base implementations of MeasureCore is not required, but might be appropriate if the base implementation provides a desired layout capability.

  • 자식 요소에 대 한 Measure 호출은 부모 요소가 지 원하는 레이아웃의 형식에 따라 부모와 동일한 availableSize 또는 영역의 하위 집합을 전달 해야 합니다.Calls to Measure on child elements should pass either the same availableSize as the parent, or a subset of the area, depending on the type of layout the parent element supports. 예를 들어, 요소 특정 테두리나 패딩, 스크롤 막대 또는 사용자 지정 컨트롤에 대 한 영역을 제거 하는 것은 유효 합니다.For example, it would be valid to remove the area for an element-specific border or padding, a scrollbar, or a custom control.

설명

UIElement대신 FrameworkElement에서 요소를 파생 하는 것이 일반적입니다.It is more common to derive an element from FrameworkElement rather than UIElement. FrameworkElement에서 파생 하는 경우 FrameworkElementMeasureCore 재정의는 MeasureCore 메서드를 봉인 합니다.If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. 따라서 FrameworkElement를 포함 하지 않는 상속을 통해 UIElement에서 파생 하는 경우 레이아웃 측정값 특성을 변경 하는 방법 으로만 MeasureCore를 재정의 합니다.Therefore, you only override MeasureCore as a means to alter layout measure characteristics if you derive from UIElement through an inheritance that does not include FrameworkElement. WPFWPF 코어 수준에서 고유한 구현을 빌드하려고 하는 경우가 여기에 해당 합니다.This might be the case if you are attempting to build your own implementation on the WPFWPF core-level. 그렇지 않고 FrameworkElement에서 파생 하는 경우 측정 동작의 구현 템플릿은의 FrameworkElement 구현입니다.MeasureOverride.Otherwise, if you are deriving from FrameworkElement, then the implementation template for Measure behavior is the FrameworkElement implementation of .MeasureOverride.

자식 요소가 있는 부모 요소는 각 자식에 대 한 Measure를 호출 해야 합니다. 그렇지 않으면 이러한 자식 요소의 크기가 조정 되거나 정렬 되지 않으므로 레이아웃에서 효과적으로 사라집니다.A parent element with child elements must call Measure on each child, otherwise these child elements are not sized or arranged and will effectively disappear from layout.

상속자 참고

구현은 무한 availableSize에 제공 된 값을 처리할 수 있어야 합니다.Implementations must be able to process a value provided for availableSize that is infinite. 무한 값은 요청 된 제약 조건이 없음을 나타내며 재귀 측정 호출을 통해 부모 요소에 대 한 측정 선택을 효과적으로 지연 시킵니다.An infinite value indicates no requested constraints, and effectively defers measurement choice to the parent element, through recursive Measure calls.

구현에서는 availableSize에 제공 된 값을 소프트 제약 조건으로 간주할 수 있습니다.Implementations can consider the value provided for availableSize to be a soft constraint. 자식 요소 애플리케이션 코드의 다른 측면 부모 요소의 현재 실제 크기를 확인할 수 있었습니다 하는 경우에 더 큰 크기를 지정할 수 있습니다.The child element might specify a larger size, even if other aspects of application code were able to determine the current actual size of the parent element. 큰 크기 요청은 부모 요소가 콘텐츠 표시 영역 내에서 콘텐츠 스크롤을 지원할 수 있는지 여부를 자식 요소가 쿼리 중임을 나타내는 규칙입니다.The large size request is a convention that indicates that the child element is querying whether your parent element can support content scrolling within a content display region.

적용 대상