Arrange 方法 (Rect)
TOC
折叠目录
展开目录
本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

UIElement.Arrange 方法 (Rect)

 

定位子元素并确定 UIElement 的大小。父元素从其 ArrangeCore 实现(或 WPF 框架级别等效项)调用此方法以形成递归布局更新。此方法产生第二次布局更新。

命名空间:   System.Windows
程序集:  PresentationCore(PresentationCore.dll 中)

public void Arrange(
	Rect finalRect
)

参数

finalRect

父元素为子元素计算的最终大小,表示为 Rect 实例。

对于 WPF 框架级元素派生方案,不应(而且不能,除非使用阴影)更改 Arrange 的行为。相反,您应该在类中重写 ArrangeOverride 实现。您的 ArrangeOverride 实现由 Arrange 在内部调用,并作为默认 WPF 框架级布局操作的组成部分。如果您的 ArrangeCore 实现有子元素,它还应该调用每个子元素上的 ArrangeOverride

对于 WPF 核心级别元素派生方案,不应(而且不能,除非使用阴影)更改 Arrange 的行为。相反,您应该在类中重写 ArrangeCore您的 ArrangeCore 实现由 Arrange 在内部调用,并作为默认 WPF 框架级别布局操作的组成部分。不过,这是假定您正在使用 WPF 框架级别布局及其布局系统,如果您正专门从 UIElement 基元素类在 WPF 核心级别派生元素,则情况往往不是这样。如果您的 ArrangeCore 实现有子元素,它还应该调用每个子元素上的 Arrange请注意,WPF 核心级别方案意味着您并未使用 FrameworkElement 派生类,因为 FrameworkElement 会密封 ArrangeCore

WPF 框架级别布局在 Windows Presentation Foundation (WPF) 中的定位计算由 Measure 调用和 Arrange 调用组成。Measure 调用期间,布局系统确定元素的大小要求,方法是使用提供的 Size (availableSize) 自变量。Arrange 调用期间,布局系统确定元素绑定框的大小和位置。有关详细信息,请参阅 Layout

availableSize 可以是从零到无穷大之间的任意数字。要进行布局的元素通过 availableSize 参数返回它们所需的最小 Size

初次实例化一个布局时,该布局总是在 Arrange 之前接受 Measure 调用。但是,在第一个布局处理过程之后,它可能收到不带 MeasureArrange 调用;当仅影响 Arrange 的属性更改(如对齐方式)时,或者父元素收到不带 MeasureArrange 时可能发生这种情况。 Measure 调用将自动使 Arrange 调用无效。

布局更新通常异步发生(发生时间由布局系统确定)。元素可能不会立即将更改反映到影响元素大小的属性(如 Width)。

System_CAPS_note注意

可以通过使用 UpdateLayout 方法来强制进行布局更新;但是,不建议调用此函数,因为这通常没有必要且可能导致性能降低。在很多可能适合调用 UpdateLayout 的情况中,布局系统可能正在处理更新。布局系统可以以某种将所有必要更新优化为包的组成部分的方式来处理布局更改。

布局系统保持两个单独的无效布局队列,一个用于 Measure,另一个用于 Arrange根据可视化树中的元素的顺序来对布局队列排序。位于树上较高处的元素在队列的顶部,以避免父级中的重复更改导致冗余的布局。重复项自动从队列中删除,如果元素已经无效,也会自动从队列中删除。

更新布局时,首先清空 Measure 队列,然后清空 Arrange 队列。如果 Measure 队列中有元素,就绝不会排列 Arrange 队列中的元素。

.NET Framework
3.0 后可用
Silverlight
2.0 后可用
Windows Phone Silverlight
7.0 后可用
返回页首
显示:
© 2016 Microsoft