Freigeben über


UIElement.Arrange(Rect) Methode

Definition

Positioniert untergeordnete Elemente und bestimmt die Größe für ein UIElement. Übergeordnete Elemente rufen diese Methode aus ihrer ArrangeCore(Rect)-Implementierung (oder einer Entsprechung auf WPF-Frameworkebene) auf, um eine rekursive Layoutaktualisierung auszuführen. Diese Methode stellt die zweite Übergabe einer Layoutaktualisierung dar.

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.

Hinweise

Bei WPF-Element auf Frameworkebene, die Szenarien ableiten, sollte das Verhalten für Arrange nicht geändert werden (und kann nicht geändert werden, es sei denn, Sie schatten). Stattdessen sollten Sie die ArrangeOverride Implementierung in Ihrer Klasse überschreiben. Ihre ArrangeOverride Implementierung wird intern von Arrange als Teil von Standardmäßigen Layoutvorgängen auf WPF-Frameworkebene aufgerufen. Ihre ArrangeCore Implementierung sollte auch für jedes untergeordnete Element aufrufen ArrangeOverride , wenn es über untergeordnete Elemente verfügt.

Bei Szenarien auf WPF-Kernebene sollte das Verhalten für Arrange nicht geändert werden (und kann nicht geändert werden, es sei denn, Sie schatten). Stattdessen sollten Sie in Ihrer Klasse überschreiben ArrangeCore . Ihre ArrangeCore Implementierung wird intern von Arrange als Teil von Standardmäßigen Layoutvorgängen auf WPF-Frameworkebene aufgerufen. Dies setzt jedoch voraus, dass Sie das Layout auf WPF-Frameworkebene und das zugehörige Layoutsystem verwenden. Dies ist häufig nicht der Fall, wenn Sie Elemente speziell auf WPF-Kernebene von der UIElement Basiselementklasse ableiten. Ihre ArrangeCore Implementierung sollte auch für jedes untergeordnete Element aufrufen Arrange , wenn es über untergeordnete Elemente verfügt. Beachten Sie, dass das WPF-Szenario auf Kernebene impliziert, dass Sie keine abgeleitete Klasse verwenden FrameworkElement , da FrameworkElement versiegelt ArrangeCorewird.

Die Berechnung der Layoutpositionierung auf WPF-Frameworkebene in Windows Presentation Foundation (WPF) besteht aus einem Measure Aufruf und einem Arrange Aufruf. Während des Measure Aufrufs bestimmt das Layoutsystem die Größenanforderungen eines Elements mithilfe eines bereitgestellten Size (availableSize)-Arguments. Während des Arrange Aufrufs finalisiert das Layoutsystem die Größe und Position des Begrenzungsrahmens eines Elements. Weitere Informationen finden Sie unter Layout.

availableSize kann eine beliebige Zahl von null bis unendlich sein. Elemente, die angelegt werden sollen, geben über den -Parameter das availableSize erforderliche Minimum Size zurück.

Wenn ein Layout zuerst instanziiert wird, empfängt es immer einen Measure Aufruf vor Arrange. Nach dem ersten Layoutdurchlauf kann es jedoch einen Arrange Aufruf ohne Measureempfangen. Dies kann passieren, wenn eine Eigenschaft, die nur Arrange auswirkungen, geändert wird (z. B. Ausrichtung), oder wenn das übergeordnete Element einen Arrange ohne Measureempfängt. Durch Measure einen Anruf wird ein Arrange Anruf automatisch ungültig.

Layoutupdates erfolgen in der Regel asynchron (zu einem Zeitpunkt, der vom Layoutsystem bestimmt wird). Ein Element spiegelt möglicherweise nicht sofort Änderungen an Eigenschaften wider, die sich auf die Elementdimensionierung auswirken (z Width. B. ).

Hinweis

Layoutupdates können mithilfe der UpdateLayout -Methode erzwungen werden. Der Aufruf dieser Funktion wird jedoch nicht empfohlen, da dies in der Regel unnötig ist und zu einer schlechten Leistung führen kann. In vielen Situationen, in denen aufrufbar UpdateLayout ist, verarbeitet das Layoutsystem wahrscheinlich bereits Updates. Das Layoutsystem kann Layoutänderungen so verarbeiten, dass alle erforderlichen Updates als Teil eines Pakets optimiert werden können.

Das Layoutsystem behält zwei separate Warteschlangen mit ungültigen Layouts bei, eine für Measure und eine für Arrange. Die Layoutwarteschlange wird basierend auf der Reihenfolge der Elemente in der visuellen Struktur sortiert. Elemente, die höher in der Struktur liegen, befinden sich oben in der Warteschlange, um redundante Layouts zu vermeiden, die durch wiederholte Änderungen in übergeordneten Elementen verursacht werden. Doppelte Einträge werden automatisch aus der Warteschlange entfernt, und Elemente werden automatisch aus der Warteschlange entfernt, wenn sie bereits gültig sind.

Beim Aktualisieren des Layouts wird zuerst die Measure Warteschlange geleert, gefolgt von der Arrange Warteschlange. Ein Element in der Arrange Warteschlange wird nie angeordnet, wenn in der Measure Warteschlange ein Element vorhanden ist.

Gilt für: