Sdílet prostřednictvím


UIElement.Arrange(Rect) Metoda

Definice

Umístí podřízené prvky a určí velikost objektu UIElement. Nadřazené elementy volají tuto metodu z jejich ArrangeCore(Rect) implementace (nebo ekvivalent na úrovni architektury WPF) k vytvoření rekurzivní aktualizace rozložení. Tato metoda představuje druhé předání aktualizace rozložení.

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)

Parametry

finalRect
Rect

Konečná velikost, kterou nadřazený objekt vypočítá pro podřízený prvek, zadaný jako Rect instance.

Poznámky

V případě scénářů odvozování elementů na úrovni architektury WPF by chování pro Arrange nemělo být změněno (a nemůže být změněno, pokud stínujete). Místo toho byste měli přepsat implementaci ArrangeOverride ve vaší třídě. Vaše ArrangeOverride implementace je volána interně jako Arrange součást výchozích operací rozložení na úrovni architektury WPF. Implementace ArrangeCore by také měla volat ArrangeOverride každý podřízený prvek, pokud má podřízené elementy.

V případě scénářů odvozování elementů na úrovni jádra WPF by se chování pro Arrange nemělo (a nelze změnit, pokud nevystínujete). Místo toho byste měli ve třídě přepsat ArrangeCore . Vaše ArrangeCore implementace je volána interně jako Arrange součást výchozích operací rozložení na úrovni architektury WPF. To však předpokládá, že používáte rozložení na úrovni architektury WPF a jeho systém rozložení, což často není případ, pokud konkrétně odvozujete elementy na úrovni jádra WPF ze UIElement základní třídy elementu. Implementace ArrangeCore by také měla volat Arrange každý podřízený prvek, pokud má podřízené elementy. Všimněte si, že scénář na úrovni jádra WPF znamená, že nepoužíváte odvozenou FrameworkElement třídu, protože FrameworkElement zapečetí ArrangeCore.

Výpočet umístění rozložení na úrovni architektury WPF v Windows Presentation Foundation (WPF) se skládá z Measure volání a Arrange volání. Measure Během volání systém rozložení určí požadavky na velikost prvku pomocí zadaného Size argumentu (availableSize). Arrange Během volání systém rozložení dokončí velikost a umístění ohraničujícího rámečku prvku. Další informace najdete v tématu Rozložení.

availableSize může být libovolné číslo od nuly do nekonečna. Prvky, které mají být rozloženy, prostřednictvím parametru availableSize vrátí minimumSize, které vyžadují.

Při prvním vytvoření instance rozložení vždy obdrží Measure volání před Arrange. Po prvním průchodu rozložení však může přijmout Arrange volání bez Measure. K tomu může dojít, když je změněna vlastnost, která ovlivňuje pouze Arrange (například zarovnání), nebo když nadřazený objekt obdrží Arrange bez Measure. Volání Measure automaticky zneplatní Arrange jeho platnost.

Aktualizace rozložení obvykle probíhají asynchronně (v čase určeném systémem rozložení). Prvek nemusí okamžitě odrážet změny vlastností, které ovlivňují velikost elementu (například Width).

Poznámka

Aktualizace rozložení lze vynutit pomocí metody . UpdateLayout Volání této funkce se však nedoporučuje, protože je obvykle zbytečné a může způsobit snížení výkonu. V mnoha situacích, kdy může být volání UpdateLayout vhodné, bude systém rozložení pravděpodobně již zpracovávat aktualizace. Systém rozložení může zpracovávat změny rozložení způsobem, který může optimalizovat všechny potřebné aktualizace v rámci balíčku.

Systém rozložení uchovává dvě samostatné fronty neplatných rozložení, jednu pro Measure a jednu pro Arrange. Fronta rozložení je seřazena podle pořadí prvků ve stromu vizuálu. Prvky výše ve stromu jsou v horní části fronty, aby se zabránilo nadbytečným rozložením způsobeným opakovanými změnami v nadřazených prvcích. Duplicitní položky jsou automaticky odebrány z fronty a prvky jsou automaticky odebrány z fronty, pokud jsou již platné.

Při aktualizaci rozložení se fronta Measure nejprve vyprázdní a potom fronta Arrange . Prvek ve frontě Arrange nebude nikdy uspořádán, pokud je ve frontě Measure prvek.

Platí pro