共用方式為


UIElement.Measure(Size) 方法

定義

更新UIElementDesiredSize。 一般而言,針對其版面配置子系實作實作自訂配置的物件,會從自己的 MeasureOverride 實作呼叫這個方法,以形成遞迴版面配置更新。

public:
 virtual void Measure(Size availableSize) = Measure;
void Measure(Size const& availableSize);
public void Measure(Size availableSize);
function measure(availableSize)
Public Sub Measure (availableSize As Size)

參數

availableSize
Size

父代可以配置給子物件的可用空間。 子物件可以要求大於可用空間;如果捲動或其他調整大小行為可能在該特定容器中,可能會容納所提供的大小。

範例

此範例會實作 MeasureOverride 來自訂自訂面板實作的「量值」傳遞邏輯。 請特別注意下列程式碼層面:

  • 逐一查看子系。
  • 針對每個子系,呼叫 Measure,使用 大小,根據 面板邏輯如何處理子係數目及其本身的已知大小限制。
  • 在此案例中傳回其大小 (,這個簡單面板會傳回固定大小,而不是計算在累積度量) 時計算的大小。
// First measure all children and return available size of panel
protected override Size MeasureOverride(Size availableSize)
{

    // Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    int i = 0;
    foreach (FrameworkElement child in Children)
    {
        if (i < 9)
        {
            child.Measure(new Size(100, 100));
        }
        else
        {
            child.Measure(new Size(0, 0));
        }

        i++;
    }


    // return the size available to the whole panel, which is 300x300
    return new Size(300, 300);
}
'First measure all children and return available size of panel 
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
    'Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    Dim i As Integer = 0
    For Each child As FrameworkElement In Children
        If i < 9 Then
            child.Measure(New Size(100, 100))
        Else
            child.Measure(New Size(0, 0))
        End If
        i += 1
    Next
    'return the size available to the whole panel, which is 300x300 
    Return New Size(300, 300)
End Function

備註

Measure 呼叫可能會達到該特定類別的 MeasureOverride 實作。 否則,大部分 的 FrameworkElement 類別都有 Measure 的隱含預設配置行為。

availableSize 可以是從零到無限的任何數位。 參與配置的專案應該會傳回給定availableSize所需的最小Size

在 XAML UI 中計算初始版面配置位置是由 Measure 呼叫和 Arrange 呼叫所組成,依該順序。 在 Measure 呼叫期間,配置系統會使用 availableSize 度量來決定元素的大小需求。 在 Arrange 呼叫期間,配置系統會完成元素周框方塊的大小和位置。

第一次產生版面配置時,它一律會有 在 Arrange之前發生的 Measure 呼叫。 不過,在第一個版面設定階段之後,就可能會發生 Arrange 呼叫,而不需在它前面有 Measure。 當影響 Arrange 的屬性變更 (例如對齊) ,或父系收到沒有 Measure 的 Arrange 時,就會發生這種情況。

量值呼叫會自動使任何 Arrange 資訊失效。 版面配置更新通常會以非同步方式 (,一次由版面配置系統) 決定。 元素可能不會立即反映影響元素調整大小的屬性變更 (,例如 Width) 。

適用於

另請參閱