UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) Method


派生クラスでオーバーライドされると、子要素のコンテンツのサイズも考慮して、この要素のサイズを適切に設定するための測定ロジックを提供します。When overridden in a derived class, provides measurement logic for sizing this element properly, with consideration of the size of any child element content.

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


Size Size Size Size

親要素が子に割り当てることができる、使用可能なサイズ。The available size that the parent element can allocate for the child.


レイアウト内のこの要素の必要なサイズ。The desired size of this element in layout.

一般的なオーバーライドMeasureCoreおおよそこのパターンに従います (という組み込みのコレクションがないVisualChildren;VisualChildren要素を保持任意の子コレクションを表すプレース ホルダーです)。A typical override of MeasureCore follows this approximate pattern (there is not a built-in collection called VisualChildren; VisualChildren is a placeholder that represents whatever child collection your element maintains).

protected override Size MeasureCore(Size availableSize)
    foreach (UIElement child in VisualChildren)
        // call some method on child that adjusts child size if needed
    Size desired = CalculateBasedOnCache(_cache);
    return desired;
Protected Overrides Function MeasureCore(ByVal availableSize As Size) As Size
	For Each child As UIElement In VisualChildren
		' call some method on child that adjusts child size if needed
	Next child
	Dim desired As Size = CalculateBasedOnCache(_cache)
	Return desired
End Function
  • 呼び出す必要がありますMeasureで各子要素。You must call Measure on each child element.

  • 一般に、実装が間測定情報をキャッシュする、MeasureCoreArrangeCoreメソッドの呼び出しで同じ要素。Generally, your implementation should cache measurement information between the MeasureCore and ArrangeCore method calls in the same element.

  • 基本実装を呼び出すMeasureCoreは必要ありませんが、適切なは、基本の実装が必要なレイアウト機能を提供する場合があります。Calling base implementations of MeasureCore is not required, but might be appropriate if the base implementation provides a desired layout capability.

  • 呼び出すMeasureの子要素渡す必要があります同じであるかavailableSize親、または領域のサブセットの場合は、レイアウトの種類に応じて、親要素をサポートしています。Calls to Measure on child elements should pass either the same availableSize as the parent, or a subset of the area, depending on the type of layout the parent element supports. たとえば、要素に固有の枠線または埋め込み、スクロール バー、またはカスタム コントロールの領域を削除するでしょう。For example, it would be valid to remove the area for an element-specific border or padding, a scrollbar, or a custom control.


要素を派生する方が一般的ですFrameworkElementなくUIElementします。It is more common to derive an element from FrameworkElement rather than UIElement. 派生する場合FrameworkElement、注意のオーバーライドをMeasureCoreFrameworkElementシール、MeasureCoreメソッド。If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. のみをオーバーライドするため、MeasureCoreから派生する場合は、レイアウトの測定の特性を変更するための手段としてUIElementが含まれていない、継承によってFrameworkElementします。Therefore, you only override MeasureCore as a means to alter layout measure characteristics if you derive from UIElement through an inheritance that does not include FrameworkElement. これがある場合、独自の実装をビルドしようとする場合、WPFWPFコア レベル。This might be the case if you are attempting to build your own implementation on the WPFWPF core-level. 派生する場合はそれFrameworkElement、メジャーの動作の実装のテンプレートは、FrameworkElementの実装。MeasureOverrideします。Otherwise, if you are deriving from FrameworkElement, then the implementation template for Measure behavior is the FrameworkElement implementation of .MeasureOverride.

子要素を持つ親要素で呼び出す必要がありますMeasureそれぞれの子では、それ以外の場合これらの子要素はいないサイズまたは配置されはレイアウトから効果的に表示されません。A parent element with child elements must call Measure on each child, otherwise these child elements are not sized or arranged and will effectively disappear from layout.

注意 (継承者)

実装は、指定された値を処理できる必要がありますavailableSize有限です。Implementations must be able to process a value provided for availableSize that is infinite. 無限の値は、要求の制約がないことを示します。 および Measure の再帰呼び出しからの親要素の測定の選択を効果的に延期します。An infinite value indicates no requested constraints, and effectively defers measurement choice to the parent element, through recursive Measure calls.

実装は、指定された値を検討できますavailableSizeソフト制約にします。Implementations can consider the value provided for availableSize to be a soft constraint. 子要素は、アプリケーション コードの他の側面が親要素の現在の実際のサイズを決定できる場合でもより大きなサイズの場合を指定可能性があります。The child element might specify a larger size, even if other aspects of application code were able to determine the current actual size of the parent element. 大きなサイズの要求は、親要素がコンテンツの表示領域内のコンテンツのスクロールをサポートできるかどうか、子要素をクエリすることを示す規則です。The large size request is a convention that indicates that the child element is querying whether your parent element can support content scrolling within a content display region.