UIElement.MeasureCore(Size) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在派生类中重写时,提供测量逻辑来适当地调整此元素的大小,兼顾任何子元素内容的大小。
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 每个子元素。
通常,实现应在同一元素中缓存度量信息与ArrangeCore方法调用之间的MeasureCore度量信息。
不需要调用基础实现,但如果基本实现 MeasureCore 提供所需的布局功能,则可能适用。
对 Measure 子元素的调用应传递与父元素相同的
availableSize
或区域的子集,具体取决于父元素支持的布局类型。 例如,删除特定于元素的边框或填充、滚动条或自定义控件的区域是有效的。
注解
派生元素比UIElement派生元素FrameworkElement更为常见。 如果派生自FrameworkElement,请注意方法上的FrameworkElementMeasureCore重写MeasureCore。 因此,如果派生自UIElement不包含FrameworkElement的继承,则仅重写MeasureCore为更改布局度量值特征的方法。 如果尝试在 WPF 核心级别上生成自己的实现,则可能是这种情况。 否则,如果要从 FrameworkElement中派生,则 Measure 行为的实现模板是 FrameworkElement .MeasureOverride的实现。
具有子元素的父元素必须对每个子元素进行调用 Measure ,否则这些子元素的大小或排列方式不会有效从布局中消失。
继承者说明
实现必须能够处理为此 availableSize
无限提供的值。 无限值表示没有请求的约束,并且通过递归 Measure 调用有效地将度量选择延迟到父元素。
实现可以考虑为 availableSize
软约束提供的值。 即使应用程序代码的其他方面能够确定父元素的当前实际大小,子元素也可以指定更大的大小。 大型请求是一个约定,指示子元素正在查询父元素是否可以支持内容显示区域中的内容滚动。