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.

protected:
 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

パラメーター

availableSize
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)
    {
        child.Measure(availableSize);
        // call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child);
    }
    Size desired = CalculateBasedOnCache(_cache);
    return desired;
}
Protected Overrides Function MeasureCore(ByVal availableSize As Size) As Size
	For Each child As UIElement In VisualChildren
		child.Measure(availableSize)
		' call some method on child that adjusts child size if needed
		_cache.StoreInfoAboutChild(child)
	Next child
	Dim desired As Size = CalculateBasedOnCache(_cache)
	Return desired
End Function
  • 各子要素Measureに対してを呼び出す必要があります。You must call Measure on each child element.

  • 通常、実装では、同じ要素内のMeasureCoreメソッドArrangeCore呼び出しとメソッド呼び出しの間で測定情報をキャッシュする必要があります。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派生している場合は、でFrameworkElementMeasureCoreオーバーライドによってMeasureCoreメソッドがシールされていることに注意してください。If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. したがって、を含まMeasureCore FrameworkElementない継承を通じてからUIElement派生する場合は、レイアウトメジャーの特性を変更する手段としてのみオーバーライドします。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. 無限値は、要求された制約がないことを示します。また、反復的なメジャー呼び出しを通じて、測定の選択を親要素に対して実質的に延期します。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.

適用対象