FrameworkElement.MeasureOverride(Size) FrameworkElement.MeasureOverride(Size) FrameworkElement.MeasureOverride(Size) FrameworkElement.MeasureOverride(Size) Method


派生クラスでオーバーライドされると、子要素に必要なレイアウトのサイズを測定し、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


Size Size Size 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)Windows Presentation Foundation (WPF)レイアウト システム。Override MeasureOverride to implement custom layout sizing behavior for your element as it participates in the Windows Presentation Foundation (WPF)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. 子要素の測定に基づいて、親の net 目的のサイズを計算します。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でない、APIAPIによって提供されるWPFWPFまたは名前付けパターンの一部です。VisualChildren is a placeholder name for purposes of this example, VisualChildren is not an APIAPI as provided by WPFWPF or a part of a naming pattern.

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