要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

UIElement.Measure 方法

更新 UIElementDesiredSize 一般地,实现其布局子级的自定义布局的对象从自己的 MeasureOverride 实现调用此方法以形成递归布局更新。

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

public void Measure(
	Size availableSize
)

参数

availableSize
类型:System.Windows.Size
父对象可以为子对象分配的可用空间。 子对象可以请求大于可用空间的空间;如果该特定容器中允许滚动或其他调整大小行为,则提供的大小可以适应此空间。

异常条件
InvalidOperationException

availableSize 包含 Double.NaN 值。 请参见"备注"。

没有理由调用可以执行自定义布局操作的重写方法的上下文之外的 MeasureArrange Silverlight 布局基于检测运行时对对象树和布局相关属性的更改,自主工作。 有关更多信息,请参见 Silverlight 布局系统

传递给 MeasureavailableSize 不能将 Double.NaN 值作为SizeHeightWidth availableSize 值可以是从零到无穷大之间的任意数字。 参与布局的元素应返回它们对于给定 availableSize 所要求的最小 Size

下面的示例实现了 MeasureOverride,以便为自定义面板实现来自定义度量处理过程逻辑。 请特别注意代码的以下方面:

  • 遍历子级。

  • 对于每个子级,使用 Size(其意义基于面板逻辑处理子级数量及其自己的已知大小限制的方式)调用 Measure

  • 返回其大小(在此情况下,此简单面板返回固定大小而不是通过累计度量计算的大小)。


// First measure all children and return available size of panel
protected override Size MeasureOverride(Size availableSize)
{

    // Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    int i =0;
    foreach (FrameworkElement child in Children)
    {
        if (i < 9)
        {
            child.Measure(new Size(100, 100));
        }
        else
        {
            child.Measure(new Size(0, 0));
        }

        i++;
    }


    // return the size available to the whole panel, which is 300x300
    return new Size(300,300);
}


Silverlight

受以下版本支持:5、4、3

Silverlight for Windows Phone

受以下版本支持:Windows Phone OS 7.1、Windows Phone OS 7.0

有关 Silverlight 支持的操作系统和浏览器的列表,请参见 支持的操作系统和浏览器

社区附加资源

添加
显示: