UIElement.Arrange(Rect) Metod

Definition

Placerar underordnade element och bestämmer en storlek för en UIElement. Överordnade element anropar den här metoden från implementeringen ArrangeCore(Rect) (eller en WPF motsvarande ramverksnivå) för att skapa en rekursiv layoutuppdatering. Den här metoden utgör det andra passet för en layoutuppdatering.

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)

Parametrar

finalRect
Rect

Den slutliga storleken som den överordnade beräknar för det underordnade elementet, som tillhandahålls som en Rect instans.

Kommentarer

För WPF scenarier på ramverksnivå bör beteendet för Arrange inte (och kan inte, om du inte skuggar) ändras. I stället bör du åsidosätta implementeringen ArrangeOverride i din klass. Implementeringen av ArrangeOverride anropas internt av Arrange som en del av standardåtgärderna för WPF layout på ramverksnivå. Implementeringen ArrangeCore bör också anropa ArrangeOverride varje underordnat element, om det har underordnade element.

För WPF scenarier på kärnnivå bör beteendet för Arrange inte (och kan inte, om du inte skuggar) ändras. I stället bör du åsidosätta ArrangeCore i klassen. Implementeringen av ArrangeCore anropas internt av Arrange som en del av standardåtgärderna för WPF layout på ramverksnivå. Detta förutsätter dock att du använder WPF layout på ramverksnivå och dess layoutsystem, vilket ofta inte är fallet om du specifikt härleder element på WPF kärnnivå från UIElement baselementklass. Implementeringen ArrangeCore bör också anropa Arrange varje underordnat element, om det har underordnade element. Observera att scenariot på WPF kärnnivå innebär att du inte använder en FrameworkElement härledd klass eftersom FrameworkElement tätningar ArrangeCore.

Beräkningen av WPF layoutplacering på ramverksnivå i Windows Presentation Foundation (WPF) består av ett Measure-anrop och ett Arrange-anrop. Under anropet Measure avgör layoutsystemet ett elements storlekskrav med hjälp av ett angivet Size (availableSize) argument. Under anropet Arrange slutför layoutsystemet storleken och positionen för ett elements avgränsningsruta. Mer information finns i Layout.

availableSize kan vara valfritt tal från noll till oändlighet. Element som ska anges returnerar det minimum Size som krävs via parametern availableSize .

När en layout först instansieras får den alltid ett Measure anrop före Arrange. Men efter det första layoutpasset kan det ta emot ett Arrange anrop utan ett Measure. Detta kan inträffa när en egenskap som endast Arrange påverkar ändras (till exempel justering) eller när den överordnade tar emot ett Arrange utan Measure. Ett Measure anrop ogiltigförklarar automatiskt ett Arrange anrop.

Layoutuppdateringar sker vanligtvis asynkront (vid en tidpunkt som bestäms av layoutsystemet). Ett element kanske inte omedelbart återspeglar ändringar i egenskaper som påverkar elementstorleken (till exempel Width).

Note

Layoutuppdateringar kan framtvingas med hjälp UpdateLayout av metoden, men att anropa den här funktionen rekommenderas inte eftersom det vanligtvis är onödigt och kan orsaka dåliga prestanda. I många situationer där anrop UpdateLayout kan vara lämpligt kommer layoutsystemet förmodligen redan att bearbeta uppdateringar. Layoutsystemet kan bearbeta layoutändringar på ett sätt som kan optimera alla nödvändiga uppdateringar som en del av ett paket.

Layoutsystemet behåller två separata köer med ogiltiga layouter, en för Measure och en för Arrange. Layoutkön sorteras baserat på ordningen på elementen i det visuella trädet. Element högre upp i trädet finns överst i kön för att undvika redundanta layouter som orsakas av upprepade ändringar i överordnade objekt. Duplicerade poster tas automatiskt bort från kön och element tas automatiskt bort från kön om de redan är giltiga.

När du uppdaterar layouten Measure töms kön först, följt av Arrange kön. Ett element i Arrange kön ordnas aldrig om det finns ett element i Measure kön.

Gäller för