UIElement.Arrange(Rect) Metoda

Definicja

Położenie elementów podrzędnych i Określanie rozmiaru dla UIElement .Positions child elements and determines a size for a UIElement. Elementy nadrzędne wywołują tę metodę z ArrangeCore(Rect) implementacji (lub równoważnej do poziomu platformy WPF) w celu utworzenia cyklicznej aktualizacji układu.Parent elements call this method from their ArrangeCore(Rect) implementation (or a WPF framework-level equivalent) to form a recursive layout update. Ta metoda stanowi drugi przebieg aktualizacji układu.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)

Parametry

finalRect
Rect

Końcowy rozmiar, który element nadrzędny oblicza dla elementu podrzędnego, jako Rect wystąpienie.The final size that the parent computes for the child element, provided as a Rect instance.

Uwagi

W przypadku elementów platformy WPF Framework, które są oparte na scenariuszach, zachowanie dla Arrange nie powinno być (i nie może, o ile nie zostanie zacieniowany).For WPF framework-level element deriving scenarios, behavior for Arrange should not (and cannot, unless you shadow) be changed. Zamiast tego należy zastąpić ArrangeOverride implementację w klasie.Instead, you should override the ArrangeOverride implementation in your class. Twoja ArrangeOverride implementacja jest wywoływana wewnętrznie przez program Arrange jako część domyślnych operacji układu na poziomie platformy WPF.Your ArrangeOverride implementation is called internally by Arrange as part of default WPF framework-level layout operations. ArrangeCoreImplementacja powinna również wywołać ArrangeOverride każdy element podrzędny, jeśli ma elementy podrzędne.Your ArrangeCore implementation should also call ArrangeOverride on each child element, if it has child elements.

W przypadku elementów opartych na poziomie WPF Core, zachowanie dla Arrange nie powinno być (i nie może, o ile nie zostanie zacieniowany).For WPF core-level element deriving scenarios, the behavior for Arrange should not (and cannot, unless you shadow) be changed. Zamiast tego należy przesłonić ArrangeCore w klasie.Instead, you should override ArrangeCore in your class. Twoja ArrangeCore implementacja jest wywoływana wewnętrznie przez program Arrange jako część domyślnych operacji układu na poziomie platformy WPF.Your ArrangeCore implementation is called internally by Arrange as part of default WPF framework-level layout operations. Jednak założono, że korzystasz z układu platformy WPF Framework i jego systemu układu, który często nie jest w przypadku wyprowadzania elementów na poziomie WPF Core z UIElement klasy elementu podstawowego.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. ArrangeCoreImplementacja powinna również wywołać Arrange każdy element podrzędny, jeśli ma elementy podrzędne.Your ArrangeCore implementation should also call Arrange on each child element, if it has child elements. Należy zauważyć, że scenariusz na poziomie rdzenia WPF oznacza, że nie używasz FrameworkElement klasy pochodnej, ponieważ FrameworkElement zamknięcia ArrangeCore .Note that the WPF core-level scenario implies that you are not using a FrameworkElement derived class, because FrameworkElement seals ArrangeCore.

Obliczenie rozmieszczenia układu na poziomie platformy WPF w Windows Presentation Foundation (WPF) składa się z Measure wywołania i Arrange wywołania.Computation of WPF framework-level layout positioning in Windows Presentation Foundation (WPF) consists of a Measure call and an Arrange call. W trakcie Measure wywołania system układu określa wymagania dotyczące rozmiaru elementu przy użyciu podanego Size argumentu ( availableSize ).During the Measure call, the layout system determines an element's size requirements using a provided Size (availableSize) argument. Podczas Arrange wywołania system układu kończy rozmiar i położenie pola ograniczenia elementu.During the Arrange call, the layout system finalizes the size and position of an element's bounding box. Aby uzyskać więcej informacji, zobacz Układ.For more information, see Layout.

availableSize może to być dowolna liczba od zera do nieskończoności.availableSize can be any number from zero to infinity. Elementy, które mają zostać ustanowione, zwracają minimalną Size wymaganą przez availableSize parametr.Elements to be laid out return the minimum Size they require through the availableSize parameter.

Po pierwszym utworzeniu wystąpienia układu zawsze odbierane jest Measure wywołanie przed Arrange .When a layout is first instantiated, it always receives a Measure call before Arrange. Jednak po pierwszym przebiegu układu może ono odebrać Arrange wywołanie bez. Measure może się tak zdarzyć, gdy właściwość, która ma wpływ tylko na Arrange zmiany (na przykład wyrównanie), lub gdy obiekt nadrzędny otrzymuje Arrange bez 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. MeasureWywołanie spowoduje automatyczne unieważnienie Arrange wywołania.A Measure call will automatically invalidate an Arrange call.

Aktualizacje układów zwykle odbywają się asynchronicznie (w czasie określonym przez system układu).Layout updates generally occur asynchronously (at a time determined by the layout system). Element może nie odzwierciedlać zmian właściwości, które wpływają na rozmiar elementu (na przykład Width ).An element might not immediately reflect changes to properties that affect element sizing (such as Width).

Uwaga

Aktualizacje układu mogą być wymuszane przy użyciu UpdateLayout metody, ale wywołanie tej funkcji nie jest zalecane, ponieważ jest zwykle zbędne i może spowodować niską wydajność.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. W wielu sytuacjach, gdy wywoływanie UpdateLayout może być odpowiednie, system układu prawdopodobnie będzie już przetwarzał aktualizacje.In many situations where calling UpdateLayout might be appropriate, the layout system will probably already be processing updates. System układu może przetwarzać zmiany układu w sposób, który może zoptymalizować wszystkie niezbędne aktualizacje w ramach pakietu.The layout system can process layout changes in a manner that can optimize all necessary updates as part of a package.

System układu przechowuje dwie osobne kolejki nieprawidłowych układów, jeden dla Measure i jeden dla Arrange .The layout system keeps two separate queues of invalid layouts, one for Measure and one for Arrange. Kolejka układu jest sortowana na podstawie kolejności elementów w drzewie wizualnym.The layout queue is sorted based upon the order of elements in the visual tree. Elementy znajdujące się wyżej w drzewie znajdują się w górnej części kolejki, aby uniknąć nadmiarowych układów spowodowanych przez powtórzone zmiany elementów nadrzędnych.Elements higher in the tree are at the top of the queue, in order to avoid redundant layouts caused by repeated changes in parents. Zduplikowane wpisy są automatycznie usuwane z kolejki, a elementy są automatycznie usuwane z kolejki, jeśli są już prawidłowe.Duplicate entries are automatically removed from the queue, and elements are automatically removed from the queue if they are already valid.

Podczas aktualizowania układu Measure kolejka jest opróżniana jako pierwsza, a następnie Arrange kolejka.When updating layout, the Measure queue is emptied first, followed by the Arrange queue. Element w Arrange kolejce nigdy nie będzie układany, jeśli w kolejce znajduje się element Measure .An element in the Arrange queue will never be arranged if there is an element in the Measure queue.

Dotyczy