UIElement.Arrange(Rect) 方法
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
放置子項目,並且判斷 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)
針對 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 專案永遠不會排列。
產品 | 版本 |
---|---|
.NET Framework | 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 |
Windows Desktop | 3.0, 3.1, 5, 6, 7 |