UIElement.Arrange(Rect) 메서드

정의

자식 요소를 배치하고 UIElement에 대한 크기를 결정합니다.Positions child elements and determines a size for a UIElement. 부모 요소는 재귀적 레이아웃 업데이트를 구성하기 위해 해당 ArrangeCore(Rect) 구현(또는 WPF 프레임워크 수준)에서 이 메서드를 호출합니다.Parent elements call this method from their ArrangeCore(Rect) implementation (or a WPF framework-level equivalent) to form a recursive layout update. 이 메서드는 레이아웃 업데이트의 두 번째 단계를 구성합니다.This method constitutes the second pass of a layout update.

public:
 void Arrange(System::Windows::Rect finalRect);
public void Arrange (System.Windows.Rect finalRect);
member this.Arrange : System.Windows.Rect -> unit
Public Sub Arrange (finalRect As Rect)

매개 변수

finalRect
Rect

부모가 자식 요소에 대해 계산하는 최종 크기로, Rect 인스턴스로 제공됩니다.The final size that the parent computes for the child element, provided as a Rect instance.

설명

WPF 프레임 워크 수준 요소 파생 시나리오의 경우에는 Arrange에 대 한 동작을 하지 않아야 합니다 (그림자를 변경 하지 않는 한).For WPF framework-level element deriving scenarios, behavior for Arrange should not (and cannot, unless you shadow) be changed. 대신 클래스에서 ArrangeOverride 구현을 재정의 해야 합니다.Instead, you should override the ArrangeOverride implementation in your class. ArrangeOverride 구현은 기본 WPF 프레임 워크 수준 레이아웃 작업의 일부로 Arrange 내부적으로 호출 됩니다.Your ArrangeOverride implementation is called internally by Arrange as part of default WPF framework-level layout operations. ArrangeCore 구현에서는 자식 요소가 있는 경우 각 자식 요소에 대해 ArrangeOverride를 호출 해야 합니다.Your ArrangeCore implementation should also call ArrangeOverride on each child element, if it has child elements.

WPF 핵심 수준 요소 파생 시나리오의 경우에는 Arrange에 대 한 동작을 변경 하지 않아야 합니다 (그림자를 변경 하지 않는 한).For WPF core-level element deriving scenarios, the behavior for Arrange should not (and cannot, unless you shadow) be changed. 대신 클래스에서 ArrangeCore를 재정의 해야 합니다.Instead, you should override ArrangeCore in your class. ArrangeCore 구현은 기본 WPF 프레임 워크 수준 레이아웃 작업의 일부로 Arrange 내부적으로 호출 됩니다.Your ArrangeCore implementation is called internally by Arrange as part of default WPF framework-level layout operations. 그러나이 경우에는 WPF 프레임 워크 수준 레이아웃 및 해당 레이아웃 시스템을 사용 하 고 있다고 가정 합니다 .이는 UIElement 기본 요소 클래스의 WPF 핵심 수준에서 요소를 구체적으로 파생 하는 경우가 종종 있습니다.However, this assumes you are using WPF framework-level layout and its layout system, which is often not the case if you are specifically deriving elements at the WPF core-level from the UIElement base element class. ArrangeCore 구현에서는 자식 요소가 있는 경우 각 자식 요소에 대해 Arrange를 호출 해야 합니다.Your ArrangeCore implementation should also call Arrange on each child element, if it has child elements. WPF 핵심 수준 시나리오는 FrameworkElement 봉인 ArrangeCore때문에 FrameworkElement 파생 클래스를 사용 하지 않음을 의미 합니다.Note that the WPF core-level scenario implies that you are not using a FrameworkElement derived class, because FrameworkElement seals ArrangeCore.

WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF)에서 WPF 프레임 워크 수준 레이아웃 위치 계산은 Measure 호출과 Arrange 호출로 구성 됩니다.Computation of WPF framework-level layout positioning in WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) consists of a Measure call and an Arrange call. Measure를 호출 하는 동안 레이아웃 시스템은 제공 된 Size (availableSize) 인수를 사용 하 여 요소의 크기 요구 사항을 결정 합니다.During the Measure call, the layout system determines an element's size requirements using a provided Size (availableSize) argument. Arrange를 호출 하는 동안 레이아웃 시스템은 요소의 경계 상자 크기와 위치를 마무리 합니다.During the Arrange call, the layout system finalizes the size and position of an element's bounding box. 자세한 내용은 레이아웃을 참조하세요.For more information, see Layout.

0에서 무한대 사이의 임의의 수 availableSize 수 있습니다.availableSize can be any number from zero to infinity. 레이아웃 될 요소는 availableSize 매개 변수를 통해 필요한 최소 Size 반환 합니다.Elements to be laid out return the minimum Size they require through the availableSize parameter.

레이아웃을 처음 인스턴스화하면 Arrange전에 항상 Measure 호출을 받습니다.When a layout is first instantiated, it always receives a Measure call before Arrange. 그러나 첫 번째 레이아웃 단계 후에는 Measure없이 Arrange 호출을 받을 수 있습니다. 이는 Arrange에만 영향을 주는 속성 (예: 맞춤)이 변경 되거나 부모에서 Measure없는 Arrange을 받는 경우에 발생할 수 있습니다.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 generally occur asynchronously (at a time determined by the layout system). 요소는 요소 크기 조정에 영향을 주는 속성의 변경 내용을 즉시 반영 하지 않을 수 있습니다 (예: Width).An element might not immediately reflect changes to properties that affect element sizing (such as Width).

참고

UpdateLayout 메서드를 사용 하 여 레이아웃 업데이트를 강제 적용할 수 있습니다. 그러나이 함수는 일반적으로 필요 하지 않으며 성능이 저하 될 수 있으므로이 함수를 호출 하는 것은 권장 되지 않습니다.Layout updates can be forced by using the UpdateLayout method; however, calling this function is not recommended, as it is usually unnecessary and can cause poor performance. UpdateLayout를 호출 하는 것이 적합할 수 있는 대부분의 경우 레이아웃 시스템은 이미 업데이트를 처리 하 고 있을 것입니다.In many situations where calling UpdateLayout might be appropriate, the layout system will probably already be processing updates. 레이아웃 시스템은 필요한 모든 업데이트를 패키지의 일부로 최적화할 수 있는 방식으로 레이아웃 변경 내용을 처리할 수 있습니다.The layout system can process layout changes in a manner that can optimize all necessary updates as part of a package.

레이아웃 시스템은 두 개의 개별 큐가 잘못 된 레이아웃을 유지 합니다. 하나는 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. 부모의 반복 된 변경으로 인 한 중복 레이아웃을 방지 하기 위해 트리의 상위 요소는 큐의 맨 위에 있습니다.Elements higher in the tree are at the top of the queue, in order 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 valid.

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

적용 대상