UIElement.ArrangeCore(Rect) 方法

定义

定义 WPF 核心级别排列布局定义的模板。

protected:
 virtual void ArrangeCore(System::Windows::Rect finalRect);
protected virtual void ArrangeCore (System.Windows.Rect finalRect);
abstract member ArrangeCore : System.Windows.Rect -> unit
override this.ArrangeCore : System.Windows.Rect -> unit
Protected Overridable Sub ArrangeCore (finalRect As Rect)

参数

finalRect
Rect

父级中应使用元素排列自身及其子元素的最终区域。

示例

ArrangeCore 实现应调用基本实现以返回大小,然后调用 Arrange 每个可见子元素的方法,并将这些 Arrange 调用返回的大小与基本实现的大小进行协调。 实现的 ArrangeCore 对帐方面逻辑可能会有所不同,具体取决于元素的布局特征。 在以下示例模板中,是一个假设属性, VisualChildren 你的元素可能定义以帮助枚举其内容; UIElement 在此级别不定义内容集合,WPF 框架级体系结构会将内容行为推迟到派生元素(如特定控件或控件基类)。

protected override void ArrangeCore(Rect finalRect)
{
     //Call base, it will set offset and RenderBounds to the finalRect:
     base.ArrangeCore(finalRect);
     foreach (UIElement child in VisualChildren)
     {
         child.Arrange(new Rect(childX, childY, childWidth, childHeight));
     }
 }
Protected Overrides Sub ArrangeCore(ByVal finalRect As Rect)
     'Call base, it will set offset and RenderBounds to the finalRect:
     MyBase.ArrangeCore(finalRect)
     For Each child As UIElement In VisualChildren
         child.Arrange(New Rect(childX, childY, childWidth, childHeight))
     Next child
End Sub

注解

备注

仅当在 WPF 核心级别派生并且不使用 WPF 框架级布局系统和 FrameworkElement 派生类时,重写此方法才合适,因为 FrameworkElement 密封 ArrangeCore。 如果使用 WPF 框架级布局系统,则为特定于类的布局排列行为替代的相应方法。ArrangeOverride

继承者说明

如果要在 WPF 核心级别开发元素,则应重写此方法,以便为 WPF 核心级元素提供唯一的排列布局行为,或就元素的子元素做出适当的布局决策。 如果无法从定义的模式(如 a ItemCollection)识别这些子元素,则可能需要重写。

父元素必须在每个子元素上调用特定于 Arrange(Rect) 类的类,否则不会呈现这些子元素。

适用于