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 或区域的子集,具体取决于父元素支持的布局类型。 例如,删除特定于元素的边框或填充、滚动条或自定义控件的区域是有效的。

注解

派生元素比UIElement派生元素FrameworkElement更为常见。 如果派生自FrameworkElement,请注意方法上的FrameworkElementMeasureCore重写MeasureCore。 因此,如果派生自UIElement不包含FrameworkElement的继承,则仅重写MeasureCore为更改布局度量值特征的方法。 如果尝试在 WPF 核心级别上生成自己的实现,则可能是这种情况。 否则,如果要从 FrameworkElement中派生,则 Measure 行为的实现模板是 FrameworkElement .MeasureOverride的实现。

具有子元素的父元素必须对每个子元素进行调用 Measure ,否则这些子元素的大小或排列方式不会有效从布局中消失。

继承者说明

实现必须能够处理为此 availableSize 无限提供的值。 无限值表示没有请求的约束,并且通过递归 Measure 调用有效地将度量选择延迟到父元素。

实现可以考虑为 availableSize 软约束提供的值。 即使应用程序代码的其他方面能够确定父元素的当前实际大小,子元素也可以指定更大的大小。 大型请求是一个约定,指示子元素正在查询父元素是否可以支持内容显示区域中的内容滚动。

适用于