FrameworkElement.MeasureOverride(Size) メソッド

定義

派生クラスでオーバーライドされると、子要素に必要なレイアウトのサイズを測定し、FrameworkElement 派生クラスのサイズを決定します。

protected:
 virtual System::Windows::Size MeasureOverride(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureOverride (System.Windows.Size availableSize);
abstract member MeasureOverride : System.Windows.Size -> System.Windows.Size
override this.MeasureOverride : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureOverride (availableSize As Size) As Size

パラメーター

availableSize
Size

この要素が子要素に提供できる使用可能なサイズ。 あらゆるコンテンツに要素がサイズを合わせることを示す値として、無限大を指定できます。

戻り値

Size

子要素のサイズの計算に基づいて、この要素が判断したレイアウト時に必要なサイズ。

注釈

をオーバーライドし MeasureOverride て、Windows Presentation Foundation (WPF) レイアウトシステムに参加するときに、要素のカスタムレイアウトのサイズ変更動作を実装します。 実装では、次の操作を行う必要があります。

  1. レイアウトの一部である子要素の特定のコレクションを反復処理 Measure し、各子要素に対してを呼び出します。

  2. 子をすぐに取得 DesiredSize します (が呼び出された後にプロパティとして設定され Measure ます)。

  3. 子要素の測定値に基づいて、親のネットワークの目的のサイズを計算します。

の戻り値は、 MeasureOverride 要素の独自の目的のサイズにする必要があります。これは、現在の要素の親要素のメジャー入力になります。 この同じプロセスは、ページのルート要素に到達するまでレイアウトシステムを経由し続けます。

このプロセスでは、子要素が DesiredSize より多くの領域を必要としていることを示すために、子要素が初期値より大きいサイズを返すことがあり availableSize ます。 これは、スクロール可能な領域を導入することによって、親コントロールのサイズを変更することによって、親コントロールのサイズを変更することによって、独自の実装で処理することができます。

重要

要素は Measure 、このプロセス中に各子でを呼び出す必要があります。そうしないと、子要素のサイズが正しく設定されたり、配置されたりしません。

注意 (継承者)

次の非コンパイルコードは、この実装パターンを示しています。 Visualchildren は、独自の要素で定義する必要がある子の列挙可能なコレクションプロパティを表します。 プロパティには、任意の名前を付けることができます。 Visualchildren は、この例のためのプレースホルダー名です。 VISUALCHILDREN は、WPF や名前付けパターンの一部で提供される API ではありません。

protected override Size MeasureOverride(Size availableSize)
{
    Size desiredSize = new Size();
    foreach (UIElement child in VisualChildren)
    {
        child.Measure(availableSize);
        // do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
        // if greater than availableSize, must decide what to do and which size to return
    }
    // desiredSize = ... computed sum of children's DesiredSize ...;
    // IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
    // PositiveInfinity might be an availableSize input; this means that the parent does not care about sizing
    return desiredSize;
}

適用対象