UIElement.MeasureCore(Size) メソッド

定義

派生クラスでオーバーライドされると、子要素のコンテンツのサイズを考慮して、この要素を適切にサイズ設定するための測定ロジックが提供されます。

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

親要素が子に割り当てることができる使用可能なサイズ。

返品

レイアウト内のこの要素の目的のサイズ。

MeasureCoreの一般的なオーバーライドは、この近似パターンに従います (VisualChildrenと呼ばれる組み込みのコレクションはありません。VisualChildrenは、要素が保持する子コレクションを表すプレースホルダーです)。

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 を呼び出す必要があります。

  • 一般に、実装では、同じ要素内の MeasureCore メソッド呼び出しと ArrangeCore メソッド呼び出しの間で測定情報をキャッシュする必要があります。

  • MeasureCoreの基本実装の呼び出しは必要ありませんが、基本実装が目的のレイアウト機能を提供する場合は適切な場合があります。

  • 子要素の Measure の呼び出しは、親要素がサポートするレイアウトの種類に応じて、親と同じ availableSize または領域のサブセットを渡す必要があります。 たとえば、要素固有の境界線またはパディング、スクロール バー、またはカスタム コントロールの領域を削除すると有効です。

注釈

FrameworkElementではなく、UIElementから要素を派生させる方が一般的です。 FrameworkElementから派生する場合は、MeasureCoreFrameworkElementのオーバーライドによってMeasureCoreメソッドがシールされることに注意してください。 したがって、MeasureCoreを含まない継承によってUIElementから派生した場合にのみ、レイアウトメジャー特性を変更する手段としてFrameworkElementをオーバーライドします。 これは、WPF コア レベルで独自の実装を構築しようとしている場合に当てはまる可能性があります。 それ以外の場合、FrameworkElementから派生する場合、Measure 動作の実装テンプレートは .FrameworkElementMeasureOverride実装です。

子要素を持つ親要素は、各子に対して Measure を呼び出す必要があります。それ以外の場合、これらの子要素のサイズや配置は行われず、レイアウトから実質的に消えます。

注意 (継承者)

実装では、無限の availableSize に指定された値を処理できる必要があります。 無限値は、要求された制約がないことを示し、再帰的な Measure 呼び出しを通じて、実質的に測定の選択を親要素に延期します。

実装では、 availableSize に指定された値をソフト制約と見なすことができます。 子要素では、アプリケーション コードの他の側面が親要素の現在の実際のサイズを決定できた場合でも、より大きなサイズを指定できます。 大きなサイズの要求は、親要素がコンテンツ表示領域内のコンテンツスクロールをサポートできるかどうかを子要素が照会していることを示す規則です。

適用対象