資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

UIElement.Arrange 方法

放置子項目,以及判斷 UIElement 的大小。 父項目會自其 ArrangeCore 實作 (或 WPF 架構層級對應項) 呼叫這個方法,以形成遞迴配置更新。 這個方法構成配置更新的第二次傳遞。

命名空間:  System.Windows
組件:  PresentationCore (在 PresentationCore.dll 中)

public void Arrange(
	Rect finalRect
)

參數

finalRect
型別:System.Windows.Rect
父項目 (Parent) 為子項目所計算的最終大小,當做 Rect 執行個體來提供。

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

針對 WPF 核心層級項目衍生的案例,不應該 (除非遮蔽,否則也不能) 變更 Arrange 的行為。 相反地,應該在您的類別中覆寫 ArrangeCore 您的 ArrangeCore 實作由 Arrange 在內部呼叫做為預設 WPF 架構層級配置作業的一部分。 不過,這是假設您使用 WPF 架構層級配置及其配置系統。如果您是在 WPF 核心層級從 UIElement 基底項目類別衍生項目,則情況通常與假設不同。 如果您的 ArrangeCore 實作具有子項目,也應該在每個子項目上呼叫 Arrange 請注意,WPF 核心層級案例意味著您不是使用 FrameworkElement 衍生類別,因為 FrameworkElement 會密封 ArrangeCore

Windows Presentation Foundation (WPF) 中對 WPF 架構層級版面配置定位的計算包含 Measure 呼叫和 Arrange Measure 呼叫期間,配置系統會使用提供的 Size (availableSize) 引數絕定項目的大小需求。 Arrange 呼叫期間,配置系統會最終處理項目周框方塊的大小和位置。 如需詳細資訊,請參閱配置系統

availableSize 可以是介於零和無限大之間的任何數字。 要配置的項目會透過 availableSize 參數傳回其所需的最小 Size

當配置第一次具現化時,一定會在 Arrange 之前收到 Measure 呼叫。 不過,在第一個配置傳遞之後,它可能會收到 Arrange 呼叫而沒有 Measure。當只影響 Arrange 的屬性發生變更 (例如對齊),或當父項目收到 Arrange 而沒有 Measure 時,就可能發生此情況。 Measure 呼叫會自動使 Arrange 呼叫失效。

配置更新通常是非同步發生 (依照配置系統所決定的時間)。 項目可能不會立即將變更反映給影響項目縮放的屬性 (例如 Width)。

注意事項注意事項

使用 UpdateLayout 方法可以強制執行配置更新,然而,並不建議呼叫這個函式,因為這通常沒有必要且可能造成效能不佳。 在許多或許適合呼叫 UpdateLayout 的情況下,配置系統可能已經在處理更新。 配置系統可採用將所有必要更新最佳化為套件 (Package) 一部分的方式,進行配置變更處理。

配置系統會保留兩個不同的無效配置佇列,一個用於 Measure,另一個則用於 Arrange 配置佇列會根據視覺化樹狀結構中的項目順序來排序。 位在樹狀結構中較高位置的項目會排在佇列頂端,以避免因父項目中的重複變更而造成多餘配置。 重覆的項目會自動從佇列移除,且已變成有效的項目也會自動從佇列移除。

當更新配置時,會先清空 Measure 佇列,然後再清空 Arrange 佇列。 如果 Measure 佇列中有某個項目,則絕對不會排列 Arrange 佇列中的項目。

This example shows how to override the default layout behavior of the Panel element and create custom layout elements that are derived from Panel.

The example defines a simple custom Panel element called PlotPanel, which positions child elements according to two hard-coded x- and y-coordinates. In this example, x and y are both set to 50; therefore, all child elements are positioned at that location on the x and y axes.

To implement custom Panel behaviors, the example uses the MeasureOverride and ArrangeOverride methods. Each method returns the Size data that is necessary to position and render child elements.


public class PlotPanel : Panel
{
    // Default public constructor
    public PlotPanel()
        : base()
    {
    }

    // Override the default Measure method of Panel
    protected override Size MeasureOverride(Size availableSize)
    {
        Size panelDesiredSize = new Size();

        // In our example, we just have one child. 
        // Report that our panel requires just the size of its only child.
        foreach (UIElement child in InternalChildren)
        {
            child.Measure(availableSize);
            panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
    }
    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in InternalChildren)
        {
            double x = 50;
            double y = 50;

            child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
        }
        return finalSize; // Returns the final Arranged size
    }
}


.NET Framework

支援版本:4、3.5、3.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

Windows 7, Windows Vista SP1 (含) 以後版本, Windows XP SP3, Windows Server 2008 (不支援伺服器核心), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心), Windows Server 2003 SP2

.NET Framework 並不支援各種平台的所有版本。如需支援的版本的清單,請參閱.NET Framework 系統需求

日期

記錄

原因

釐清<備註>中關於計算配置定位的段落。

客戶回函。

社群新增項目

顯示:
© 2014 Microsoft