UIElement.Measure(Size) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
更新 UIElement 的 DesiredSize。 父元素从其自身的 MeasureCore(Size) 实现调用此方法以形成递归布局更新。 调用此方法构成布局更新的第一个处理过程(“测量”处理过程)。
public:
void Measure(System::Windows::Size availableSize);
public void Measure (System.Windows.Size availableSize);
member this.Measure : System.Windows.Size -> unit
Public Sub Measure (availableSize As Size)
参数
- availableSize
- Size
父元素可以为子元素分配的可用空间。 子元素可以请求大于可用空间的空间;如果可在当前元素的内容模型中进行滚动,则提供的大小可以适应此空间。
注解
Windows Presentation Foundation (WPF) 中的布局定位计算由Measure调用和Arrange调用组成。 在 Measure 调用期间,元素通过使用 availableSize
输入来确定其大小要求。 在 Arrange 调用期间,元素大小将完成。
availableSize
可以是从零到无限的任意数字。 参与布局的元素应返回给定availableSize
元素所需的最小值Size。
首次实例化布局时,它始终在之前Arrange收到呼叫Measure。 但是,在第一 Arrange 个布局传递之后,它可能会收到没有 a Measure的调用;当影响仅 Arrange 影响的属性更改 ((如对齐) )或父级收到 Arrange 无 Measure对齐时,可能会发生这种情况。 Measure调用将自动使Arrange呼叫失效。
布局更新以异步方式进行,以便主线程不会等待每个可能的布局更改。 通过属性值的代码隐藏检查查询元素可能不会立即反映与属性 (大小 Width 或布局特征交互的属性的更改,例如) 。
备注
可以使用此方法强制进行 UpdateLayout 布局更新。 但是,调用此方法通常是不必要的,可能会导致性能不佳。
布局系统保留两个单独的无效布局队列,一个用于Measure另一个。Arrange 布局队列根据执行布局的元素视觉树中的元素顺序排序:树中较高元素位于队列顶部,以避免由父级重复更改导致的冗余布局。 重复条目会自动从队列中删除,如果元素已进行布局验证,则会自动从队列中删除这些条目。
更新布局时,先 Measure 清空队列,然后 Arrange 是队列。 如果队列中有 Arrange 一个元素,则永远不会排列队列中的 Measure 元素。