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 seals ArrangeCore。 如果使用WPF框架级布局系统,则为特定于类的布局排列行为替代的适当方法ArrangeOverride

继承者说明

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

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

适用于