UIElement.Arrange(Rect) UIElement.Arrange(Rect) UIElement.Arrange(Rect) UIElement.Arrange(Rect) Method

Definition

Positioniert untergeordnete Elemente und bestimmt die Größe für ein UIElement.Positions child elements and determines a size for a UIElement. Übergeordnete Elemente rufen diese Methode aus ihrer ArrangeCore(Rect)-Implementierung (oder einer Entsprechung auf WPF-Frameworkebene) auf, um eine rekursive Layoutaktualisierung auszuführen.Parent elements call this method from their ArrangeCore(Rect) implementation (or a WPF framework-level equivalent) to form a recursive layout update. Diese Methode stellt die zweite Übergabe einer Layoutaktualisierung dar.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)

Parameter

finalRect
Rect Rect Rect Rect

Die endgültige Größe, die das übergeordnete Element für das untergeordnete Element berechnet, als eine Rect-Instanz.The final size that the parent computes for the child element, provided as a Rect instance.

Hinweise

Bei Elementen, die auf der WPF-Frameworkebene ausgeführt werden, sollte das Verhalten von Arrange nicht (und kann nicht geändert werden).For WPF framework-level element deriving scenarios, behavior for Arrange should not (and cannot, unless you shadow) be changed. Stattdessen sollten Sie die-Implementierung ArrangeOverride in der Klasse überschreiben.Instead, you should override the ArrangeOverride implementation in your class. Ihre ArrangeOverride Implementierung wird intern von Arrange als Teil der standardmäßigen WPF-Frameworkebene aufgerufen.Your ArrangeOverride implementation is called internally by Arrange as part of default WPF framework-level layout operations. Ihre ArrangeCore Implementierung sollte auch für ArrangeOverride jedes untergeordnete Element aufgerufen werden, wenn es über untergeordnete Elemente verfügt.Your ArrangeCore implementation should also call ArrangeOverride on each child element, if it has child elements.

Bei WPF-Elementen, die auf der kernebenenebene Arrange abgeleitet werden, sollte das Verhalten für nicht geändert werden (und nicht, wenn Sie Schatten).For WPF core-level element deriving scenarios, the behavior for Arrange should not (and cannot, unless you shadow) be changed. Stattdessen sollten Sie in der ArrangeCore Klasse überschreiben.Instead, you should override ArrangeCore in your class. Ihre ArrangeCore Implementierung wird intern von Arrange als Teil der standardmäßigen WPF-Frameworkebene aufgerufen.Your ArrangeCore implementation is called internally by Arrange as part of default WPF framework-level layout operations. Dabei wird jedoch davon ausgegangen, dass Sie das Layout der WPF-Frameworkebene und das zugehörige Layoutsystem verwenden. Dies ist häufig nicht der Fall, wenn Sie Elemente auf WPF-Kern Ebene von der UIElement Basiselement Klasse ableiten.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. Ihre ArrangeCore Implementierung sollte auch für Arrange jedes untergeordnete Element aufgerufen werden, wenn es über untergeordnete Elemente verfügt.Your ArrangeCore implementation should also call Arrange on each child element, if it has child elements. Beachten Sie, dass das WPF-kernelebenenszenario impliziert, dass FrameworkElement Sie keine abgeleitete FrameworkElement Klasse ArrangeCoreverwenden, da die-Klasse versiegelt ist.Note that the WPF core-level scenario implies that you are not using a FrameworkElement derived class, because FrameworkElement seals ArrangeCore.

Die Berechnung der layoutpositionierung auf WPF- Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) Frameworkebene in besteht Arrange aus einem Measure -und einem-Rückruf.Computation of WPF framework-level layout positioning in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) consists of a Measure call and an Arrange call. Während des Measure Aufrufes bestimmt das Layoutsystem die Größenanforderungen eines Elements mit Size einemavailableSizebereitgestellten Argument ().During the Measure call, the layout system determines an element's size requirements using a provided Size (availableSize) argument. Während des Arrange Aufrufes schließt das Layoutsystem die Größe und Position des Begrenzungs Felds eines Elements ab.During the Arrange call, the layout system finalizes the size and position of an element's bounding box. Weitere Informationen finden Sie unter Layout.For more information, see Layout.

availableSizekann eine beliebige Zahl zwischen 0 (null) und unendlich sein.availableSize can be any number from zero to infinity. Elemente, die angelegt werden sollen, geben Size das erforderliche minimal über availableSize den-Parameter zurück.Elements to be laid out return the minimum Size they require through the availableSize parameter.

Wenn ein Layout zum ersten Mal instanziiert wird, empfängt es Measure immer einen Arrange-Rückruf.When a layout is first instantiated, it always receives a Measure call before Arrange. Nach dem ersten Layoutdurchlauf wird jedoch möglicherweise Arrange ein-Rückruf ohne einen Measureempfangen. Dies kann vorkommen, wenn eine Eigenschaft, die nur Arrange Auswirkungen hat, geändert wird (z. b. die Ausrichtung Arrange ) oder wenn das übergeordnete Element einen ohne 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. Durch Measure einen-Befehl wird ein Arrange -Befehl automatisch ungültig.A Measure call will automatically invalidate an Arrange call.

Layoutaktualisierungen werden in der Regel asynchron (zu einem vom Layoutsystem festgelegten Zeitpunkt) durchführen.Layout updates generally occur asynchronously (at a time determined by the layout system). Ein Element reflektiert möglicherweise nicht sofort Änderungen an Eigenschaften, die die Größe des Elements Widthbeeinflussen (z. b.).An element might not immediately reflect changes to properties that affect element sizing (such as Width).

Hinweis

Layoutaktualisierungen können mithilfe der UpdateLayout -Methode erzwungen werden. das Aufrufen dieser Funktion ist jedoch nicht empfehlenswert, da Sie in der Regel unnötig ist und zu einer schlechten Leistung führen kann.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. In vielen Fällen, in UpdateLayout denen der Aufruf von sinnvoll ist, verarbeitet das Layoutsystem wahrscheinlich bereits Updates.In many situations where calling UpdateLayout might be appropriate, the layout system will probably already be processing updates. Das Layoutsystem kann Layoutänderungen auf eine Weise verarbeiten, die alle erforderlichen Updates als Teil eines Pakets optimieren kann.The layout system can process layout changes in a manner that can optimize all necessary updates as part of a package.

Das Layoutsystem speichert zwei separate Warteschlangen mit ungültigen Layouts Measure , eine für Arrangeund eine für.The layout system keeps two separate queues of invalid layouts, one for Measure and one for Arrange. Die layoutwarteschlange wird basierend auf der Reihenfolge der Elemente in der visuellen Struktur sortiert.The layout queue is sorted based upon the order of elements in the visual tree. Elemente oberhalb der Struktur befinden sich am Anfang der Warteschlange, um redundante Layouts zu vermeiden, die durch wiederholte Änderungen in den übergeordneten Elementen verursacht werden.Elements higher in the tree are at the top of the queue, in order to avoid redundant layouts caused by repeated changes in parents. Doppelte Einträge werden automatisch aus der Warteschlange entfernt, und Elemente werden automatisch aus der Warteschlange entfernt, wenn Sie bereits gültig sind.Duplicate entries are automatically removed from the queue, and elements are automatically removed from the queue if they are already valid.

Beim Aktualisieren des Layouts wird Measure die Warteschlange zuerst geleert, gefolgt von Arrange der Warteschlange.When updating layout, the Measure queue is emptied first, followed by the Arrange queue. Ein Element in der Arrange Warteschlange wird nie angeordnet, wenn ein Element in der Measure Warteschlange vorhanden ist.An element in the Arrange queue will never be arranged if there is an element in the Measure queue.

Gilt für: