UIElement.Measure(Size) 메서드

정의

UIElementDesiredSize를 업데이트합니다.Updates the DesiredSize of a UIElement. 부모 요소는 재귀적 레이아웃 업데이트를 구성하기 위해 해당 MeasureCore(Size) 구현에서 이 메서드를 호출합니다.Parent elements call this method from their own MeasureCore(Size) implementations to form a recursive layout update. 이 메서드 호출은 레이아웃 업데이트의 첫 번째 단계("측정" 단계)를 구성합니다.Calling this method constitutes the first pass (the "Measure" pass) of a layout update.

public:
 void Measure(System::Windows::Size availableSize);
public void Measure (System.Windows.Size availableSize);
member this.Measure : System.Windows.Size -> unit
Public Sub Measure (availableSize As Size)

매개 변수

availableSize
Size

부모 요소에서 자식 요소를 할당할 수 있는 사용 가능한 공간입니다.The available space that a parent element can allocate a child element. 자식 요소는 사용 가능한 공간보다 큰 공간을 요청할 수 있습니다. 현재 요소에 대한 콘텐츠 모델에서 스크롤이 가능한 경우 제공된 크기를 수용할 수 있습니다.A child element can request a larger space than what is available; the provided size might be accommodated if scrolling is possible in the content model for the current element.

설명

Windows Presentation Foundation (WPF)에서 레이아웃 위치 계산은 호출과 호출로 구성 됩니다 Measure Arrange .Computation of layout positioning in Windows Presentation Foundation (WPF) is comprised of a Measure call and an Arrange call. 호출 하는 동안 Measure 요소는 입력을 사용 하 여 크기 요구 사항을 결정 availableSize 합니다.During the Measure call, an element determines its size requirements by using an availableSize input. 호출 하는 동안 Arrange 요소 크기가 마무리 됩니다.During the Arrange call, the element size is finalized.

availableSize 0에서 무한대 사이의 임의의 숫자를 사용할 수 있습니다.availableSize can be any number from zero to infinite. 레이아웃에 참여 하는 요소는 Size 지정 된에 필요한 최소값을 반환 해야 합니다 availableSize .Elements participating in layout should return the minimum Size they require for a given availableSize.

레이아웃을 처음 인스턴스화하면 항상 앞에서 호출을 받습니다 Measure Arrange .When a layout is first instantiated, it always receives a Measure call before Arrange. 그러나 첫 번째 레이아웃 단계 후에 Arrange 는를 사용 하지 않고 호출을 받을 수 있습니다 Measure .에만 영향을 주는 속성 Arrange (예: 맞춤)이 변경 되거나 부모에서가 없는을 받는 경우이 오류가 발생할 수 있습니다 Arrange Measure .However, after the first layout pass, it may receive an Arrange call without a Measure; this can happen when a property that affects only Arrange is changed (such as alignment), or when the parent receives an Arrange without a Measure. 호출은 Measure 자동으로 호출을 무효화 Arrange 합니다.A Measure call will automatically invalidate an Arrange call.

레이아웃 업데이트는 주 스레드가 가능한 모든 레이아웃 변경에 대해 기다리지 않도록 비동기 방식으로 수행 됩니다.Layout updates happen asynchronously, such that the main thread is not waiting for every possible layout change. 속성 값의 코드 기반 검사를 통해 요소를 쿼리하면 크기 조정 또는 레이아웃 특성과 상호 작용 하는 속성 ( Width 예: 속성)의 변경 내용이 즉시 반영 되지 않을 수 있습니다.Querying an element via code-behind checking of property values may not immediately reflect changes to properties that interact with the sizing or layout characteristics (the Width property, for example).

참고

메서드를 사용 하 여 레이아웃 업데이트를 강제로 수행할 수 있습니다 UpdateLayout .Layout updates can be forced by using the UpdateLayout method. 그러나이 메서드를 호출 하는 것은 일반적으로 필요 하지 않으며 성능이 저하 될 수 있습니다.However, calling this method is usually unnecessary and can cause poor performance.

레이아웃 시스템은 두 개의 개별 큐가 잘못 된 레이아웃을 유지 Measure Arrange 합니다.The layout system keeps two separate queues of invalid layouts, one for Measure and one for Arrange. 레이아웃 큐는 레이아웃을 수행 하는 요소의 시각적 트리에서 요소 순서에 따라 정렬 됩니다. 부모에서 반복 되는 변경으로 인해 발생 하는 중복 레이아웃을 방지 하기 위해 트리의 상위 요소는 큐의 맨 위에 있습니다.The layout queue is sorted based upon the order of elements in the visual tree of the element performing layout; elements higher in the tree are at the top of the queue, to avoid redundant layouts caused by repeated changes in parents. 중복 항목은 큐에서 자동으로 제거 되 고 요소는 이미 레이아웃의 유효성을 검사 한 경우 큐에서 자동으로 제거 됩니다.Duplicate entries are automatically removed from the queue, and elements are automatically removed from the queue if they are already layout-validated.

레이아웃을 업데이트 하는 경우 큐가 Measure 먼저 비워지고 큐가 나옵니다 Arrange .When updating layout, the Measure queue is emptied first, followed by the Arrange queue. 큐에 요소가 있으면 Arrange 큐의 요소가 정렬 되지 않습니다 Measure .An element in the Arrange queue will never be arranged if there is an element in the Measure queue.

적용 대상