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

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

戻り値

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 MeasureCore FrameworkElement がシールされます MeasureCore 。 したがって、 を含む継承から派生した場合にのみ、レイアウト メジャーの特性を変更する MeasureCore UIElement 手段として をオーバーライドします FrameworkElement 。 WPF のコア レベルで独自の実装を構築する場合は、このような場合があります。 それ以外の場合は、 から派生する場合、メジャー動作の実装テンプレートは の FrameworkElement FrameworkElement 実装です MeasureOverride

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

注意 (継承者)

実装では、無限の に対して指定された値 availableSize を処理できる必要があります。 無限値は、要求された制約を示しません。また、再帰メジャー呼び出しを使用して、親要素に対する測定の選択を効果的に延期します。

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

適用対象