FrameworkElement.MeasureOverride(Size) メソッド


派生クラスでオーバーライドされると、子要素に必要なレイアウトのサイズを測定し、FrameworkElement 派生クラスのサイズを決定します。When overridden in a derived class, measures the size in layout required for child elements and determines a size for the FrameworkElement-derived class.

 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



この要素が子要素に提供できる使用可能なサイズ。The available size that this element can give to child elements. あらゆるコンテンツに要素がサイズを合わせることを示す値として、無限大を指定できます。Infinity can be specified as a value to indicate that the element will size to whatever content is available.



子要素のサイズの計算に基づいて、この要素が判断したレイアウト時に必要なサイズ。The size that this element determines it needs during layout, based on its calculations of child element sizes.


をオーバーライドし MeasureOverride て、Windows Presentation Foundation (WPF) レイアウトシステムに参加するときに、要素のカスタムレイアウトのサイズ変更動作を実装します。Override MeasureOverride to implement custom layout sizing behavior for your element as it participates in the Windows Presentation Foundation (WPF) layout system. 実装では、次の操作を行う必要があります。Your implementation should do the following:

  1. レイアウトの一部である子要素の特定のコレクションを反復処理 Measure し、各子要素に対してを呼び出します。Iterate your element's particular collection of children that are part of layout, call Measure on each child element.

  2. 子をすぐに取得 DesiredSize します (が呼び出された後にプロパティとして設定され Measure ます)。Immediately get DesiredSize on the child (this is set as a property after Measure is called).

  3. 子要素の測定値に基づいて、親のネットワークの目的のサイズを計算します。Compute the net desired size of the parent based upon the measurement of the child elements.

の戻り値は、 MeasureOverride 要素の独自の目的のサイズにする必要があります。これは、現在の要素の親要素のメジャー入力になります。The return value of MeasureOverride should be the element's own desired size, which then becomes the measure input for the parent element of the current element. この同じプロセスは、ページのルート要素に到達するまでレイアウトシステムを経由し続けます。This same process continues through the layout system until the root element of the page is reached.

このプロセスでは、子要素が DesiredSize より多くの領域を必要としていることを示すために、子要素が初期値より大きいサイズを返すことがあり availableSize ます。During this process, child elements might return a larger DesiredSize size than the initial availableSize to indicate that the child element wants more space. これは、スクロール可能な領域を導入することによって、親コントロールのサイズを変更することによって、親コントロールのサイズを変更することによって、独自の実装で処理することができます。This might be handled in your own implementation by introducing a scrollable region, by resizing the parent control, by establishing some manner of stacked order, or any number of solutions for measuring or arranging content.


要素は Measure 、このプロセス中に各子でを呼び出す必要があります。そうしないと、子要素のサイズが正しく設定されたり、配置されたりしません。Elements should call Measure on each child during this process, otherwise the child elements will not be correctly sized or arranged.

注意 (継承者)

次の非コンパイルコードは、この実装パターンを示しています。The following non-compiling code shows this implementation pattern. Visualchildren は、独自の要素で定義する必要がある子の列挙可能なコレクションプロパティを表します。VisualChildren represents an enumerable collection property of children that your own element should define. プロパティには、任意の名前を付けることができます。The property can be named anything. Visualchildren は、この例のためのプレースホルダー名です。 VISUALCHILDREN は、WPF や名前付けパターンの一部で提供される API ではありません。VisualChildren is a placeholder name for purposes of this example, VisualChildren is not an API as provided by WPF or a part of a naming pattern.

[! code-csharpCorePseudocode # FEMeasureOverride][! code-vbCorePseudocode # FEMeasureOverride][!code-csharpCorePseudocode#FEMeasureOverride] [!code-vbCorePseudocode#FEMeasureOverride]