エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

UIElement.Measure メソッド

2013/12/12

UIElementDesiredSize を更新します。通常、レイアウトの子のカスタム レイアウトを実装するオブジェクトは、独自の MeasureOverride 実装からこのメソッドを呼び出し、レイアウトを再帰的に更新します。

Namespace:  System.Windows
アセンブリ:  System.Windows (System.Windows.dll 内)

public void Measure(
	Size availableSize
)

パラメーター

availableSize
型: System.Windows.Size
親が子オブジェクトを割り当てることができる、使用可能な領域。子オブジェクトは、使用可能な領域よりも広い領域を要求できます。その特定のコンテナーでスクロールまたはその他のサイズ変更動作を使用できる場合は、要求されたサイズが受け入れられることがあります。

例外条件
InvalidOperationException

availableSizeDouble.NaN 値が含まれていました。「解説」を参照してください。

カスタム レイアウト アクションを実行するメソッドをオーバーライドするコンテキストの外部で、Measure または Arrange を呼び出す必要はありません。Windows Phone レイアウトは、ランタイムに検出されたオブジェクト ツリーとレイアウト関連のプロパティの変更に基づいて自律的に動作します。詳細については、「Windows Phone のレイアウト」を参照してください。

Measure に渡す availableSize には、SizeHeightWidth のどちらの Double.NaN 値を指定することもできません。availableSize 値は、0 から無限大までの任意の数です。レイアウトに関係する要素は、指定された availableSize に対して必要な Size の最小値を返します。

次の例では、カスタム パネル実装の測定パス ロジックをカスタマイズするために MeasureOverride を実装しています。特に、コードに関して次の点に注意してください。

  • 子を反復処理します。

  • それぞれの子に対して、適切な Size を使用して 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);
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft