この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

UIElement.Measure メソッド

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

名前空間:  System.Windows
アセンブリ :  System.Windows (System.Windows.dll 内)

public void Measure(
	Size availableSize
)

パラメーター

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

例外条件
InvalidOperationException

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

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

Measure に渡す availableSize には、SizeHeightWidth のどちらの Double.NaN 値を指定することもできません。 availableSize 値には、ゼロから無限大までの任意の数値を指定できます。 レイアウトに関係する要素は、指定された 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);
}


Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

追加
表示: