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