UIElement.Arrange(Rect) Methode

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

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 für 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 ArrangeOverride Implementierung in der Klasse überschreiben.Instead, you should override the ArrangeOverride implementation in your class. Die ArrangeOverride-Implementierung wird intern durch 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. Die ArrangeCore-Implementierung sollte auch ArrangeOverride für jedes untergeordnete Element aufzurufen, 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 mit kernebenenableitung sollte das Verhalten für Arrange nicht (und kann nur dann geändert werden, wenn Sie den Schatten) ändern.For WPF core-level element deriving scenarios, the behavior for Arrange should not (and cannot, unless you shadow) be changed. Stattdessen sollten Sie ArrangeCore in der Klasse überschreiben.Instead, you should override ArrangeCore in your class. Die ArrangeCore-Implementierung wird intern durch 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 aus 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. Die ArrangeCore-Implementierung sollte auch Arrange für jedes untergeordnete Element aufzurufen, 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 Sie keine FrameworkElement abgeleitete Klasse verwenden, da FrameworkElement Siegel ArrangeCore.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-Frameworkebene in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) besteht aus einem Measure-und einem Arrange-Befehl.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 mithilfe eines bereitgestellten Size (availableSize)-Arguments.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 umgebenden 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.

availableSize kann eine beliebige Zahl zwischen 0 (null) und unendlich sein.availableSize can be any number from zero to infinity. Elemente, die angelegt werden sollen, geben den minimalen Size an, den Sie über den availableSize-Parameter benötigen.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 immer einen Measure-Aufrufvorgang vor Arrange.When a layout is first instantiated, it always receives a Measure call before Arrange. Nach dem ersten Layoutdurchlauf erhält es jedoch möglicherweise einen Arrange-Aufrufvorgang ohne Measure. Dies kann vorkommen, wenn eine Eigenschaft, die sich nur auf Arrange auswirkt (z. b. Ausrichtung), oder wenn das übergeordnete Element eine Arrange ohne einen Measureempfängt.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. Bei einem Measure-Aufrufvorgang wird automatisch ein Arrange aufgerufen.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 beeinflussen (z. b. Width).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 Situationen, in denen das Aufrufen von UpdateLayout möglicherweise 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, eine für Measure und eine für die Arrange.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.

Wenn Sie das Layout aktualisieren, wird die Measure Warteschlange zuerst geleert, gefolgt von der Arrange 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: