UIElement.Arrange(Rect) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Positioniert untergeordnete Elemente und bestimmt eine Größe für ein UIElement. Übergeordnete Elemente rufen diese Methode aus ihrer ArrangeCore(Rect) Implementierung (oder einem WPF-Framework-Äquivalent) auf, um eine rekursive Layoutaktualisierung zu bilden. Diese Methode stellt den zweiten Durchlauf 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, bereitgestellt als Rect Instanz.
Hinweise
Für WPF Frameworkebenen-Ableitungsszenarien sollte das Verhalten für Arrange nicht geändert werden (es sei denn, Sie schattenn). Stattdessen sollten Sie die ArrangeOverride Implementierung in Ihrer Klasse überschreiben. Ihre ArrangeOverride-Implementierung wird intern von Arrange als Teil der standardmäßigen WPF Layoutvorgänge auf Frameworkebene aufgerufen. Ihre ArrangeCore Implementierung sollte auch jedes untergeordnete Element aufrufen ArrangeOverride , wenn es untergeordnete Elemente enthält.
Für WPF Ableitungsszenarien auf Kernebene sollte das Verhalten für Arrange nicht geändert werden (es sei denn, Sie schattenn). Stattdessen sollten Sie in Ihrem Kurs außer Kraft setzen ArrangeCore . Ihre ArrangeCore-Implementierung wird intern von Arrange als Teil der standardmäßigen WPF Layoutvorgänge auf Frameworkebene aufgerufen. Dabei wird jedoch davon ausgegangen, dass Sie WPF Layout auf Frameworkebene und dessen Layoutsystem verwenden, was häufig nicht der Fall ist, wenn Sie Elemente speziell auf der WPF Kernebene von der UIElement Basiselementklasse ableiten. Ihre ArrangeCore Implementierung sollte auch jedes untergeordnete Element aufrufen Arrange , wenn es untergeordnete Elemente enthält. Beachten Sie, dass das szenario auf WPF Kernebene impliziert, dass Sie keine von FrameworkElement abgeleitete Klasse verwenden, da FrameworkElement seals ArrangeCore.
Die Berechnung WPF Layoutpositionierung auf Frameworkebene in Windows Presentation Foundation (WPF) besteht aus einem aufruf Measure 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 schließt das Layoutsystem die Größe und Position des umgebenden Felds eines Elements ab. Weitere Informationen finden Sie unter Layout-.
availableSize kann eine beliebige Zahl zwischen Null und Unendlichkeit sein. Elemente, die so angeordnet werden sollen, geben das Mindestmaß Size zurück, das sie über den availableSize Parameter benötigen.
Wenn ein Layout zum ersten Mal instanziiert wird, empfängt es immer einen Measure Anruf vor Arrange. Nach dem ersten Layoutdurchlauf kann es jedoch einen Arrange Aufruf ohne einen MeasureAufruf empfangen. Dies kann passieren, wenn eine Eigenschaft, die sich nur Arrange auf die Änderung auswirkt (z. B. Ausrichtung), oder wenn das übergeordnete Element eine Arrange ohne Eine Measureerhält. Ein Measure Anruf wird automatisch ungültig Arrange .
Layoutaktualisierungen 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 Größenanpassung von Elementen auswirken (z Width. B. ).
Note
Layoutupdates können mithilfe der UpdateLayout Methode erzwungen werden. Das Aufrufen dieser Funktion wird jedoch nicht empfohlen, da sie normalerweise unnötig ist und zu einer schlechten Leistung führen kann. In vielen Situationen, in denen der Aufruf UpdateLayout geeignet sein könnte, verarbeitet das Layoutsystem wahrscheinlich bereits Updates. Das Layoutsystem kann Layoutänderungen auf eine Weise verarbeiten, die alle erforderlichen Updates als Teil eines Pakets optimieren kann.
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 sich weiter oben in der Struktur befinden, 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 die Measure Warteschlange zuerst geleert, gefolgt von der Arrange Warteschlange. Ein Element in der Arrange Warteschlange wird nie angeordnet, wenn ein Element in der Measure Warteschlange vorhanden ist.