次の方法で共有


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

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

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

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

注釈

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

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

注意 (継承者)

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

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

適用対象