UIElement.Arrange(Rect) 方法

定義

放置子項目,並且判斷 UIElement 的大小。 父項目從 ArrangeCore(Rect) 實作 (或 WPF 架構層級對等項目) 中呼叫此方法,以形成遞迴配置更新。 這個方法會構成配置更新的第二個階段。

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)

參數

finalRect
Rect

父代為子項目計算的最終大小,提供作為 Rect 執行個體。

備註

針對 WPF 架構層級專案衍生案例, Arrange 除非陰影) 變更,否則 的行為不應該 (且無法。 相反地,您應該覆寫 ArrangeOverride 類別中的實作。 您的 ArrangeOverride 實作會在內部 Arrange 呼叫,做為預設 WPF 架構層級版面配置作業的一部分。 如果您的實作具有子項目,則 ArrangeCore 也應該在每個子專案上呼叫 ArrangeOverride

針對 WPF 核心層級元素衍生案例, Arrange 除非陰影) 變更,否則 的行為不應該 (且無法。 相反地,您應該覆寫 ArrangeCore 類別中的 。 您的 ArrangeCore 實作會在內部 Arrange 呼叫,做為預設 WPF 架構層級版面配置作業的一部分。 不過,這會假設您使用 WPF 架構層級版面配置及其版面配置系統,如果您特別從 UIElement 基底元素類別衍生 WPF 核心層級的專案,通常不是這種情況。 如果您的實作具有子項目,則 ArrangeCore 也應該在每個子專案上呼叫 Arrange 。 請注意,WPF 核心層級案例表示您不使用 FrameworkElement 衍生類別,因為 FrameworkElement seals ArrangeCore

在 WPF Windows Presentation Foundation () 中計算 WPF 架構層級配置位置) 是由 Measure 呼叫和 Arrange 呼叫所組成。 在 Measure 呼叫期間,配置系統會使用提供的 Size (availableSize) 引數來決定元素的大小需求。 在 Arrange 呼叫期間,配置系統會完成元素周框方塊的大小和位置。 如需詳細資訊,請參閱配置

availableSize 可以是從零到無限大的任何數位。 要配置的專案會透過 availableSize 參數傳回所需的最小值 Size

第一次具現化版面配置時,它一律會在 之前 Arrange 收到 Measure 呼叫。 不過,在第一個 Arrange 版面配置傳遞之後,它可能會收到沒有 Measure 的呼叫;這可能會在影響只 Arrange 影響的屬性變更 (例如對齊) ,或父系收到 Arrange 沒有 Measure 的 時發生。 Measure呼叫會自動使 Arrange 通話失效。

版面配置更新通常會在版面配置系統) 一次非同步 (。 專案可能不會立即反映影響元素調整大小的屬性變更 (,例如 Width) 。

注意

版面配置 UpdateLayout 更新可以使用 方法來強制進行;不過,不建議呼叫此函式,因為它通常是不必要的,而且可能會導致效能不佳。 在許多情況下,呼叫 UpdateLayout 可能適當,版面配置系統可能已經處理更新。 版面配置系統可以處理版面配置變更的方式,可將所有必要的更新優化為套件的一部分。

版面配置系統會保留兩個不同的配置佇列,一個用於 Measure ,另一個用於 Arrange 。 配置佇列會根據視覺化樹狀結構中的元素順序排序。 樹狀結構中較高的元素位於佇列頂端,以避免由父代中重複變更所造成的備援配置。 重複的專案會自動從佇列中移除,而且如果專案已經有效,則會自動從佇列中移除專案。

更新版面配置時,佇列 Measure 會先清空,後面接著 Arrange 佇列。 如果佇列中有 Measure 元素,則佇列中的 Arrange 專案永遠不會排列。

適用於