UIElement.ArrangeCore(Rect) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义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) 类的元素,否则不会呈现这些子元素。