导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

UIElement.Measure 方法

2013/12/13

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

Namespace:  System.Windows
程序集:  System.Windows(位于 System.Windows.dll 中)

public void Measure(
	Size availableSize
)

参数

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

异常条件
InvalidOperationException

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

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

您将传递给 MeasureavailableSize 不能有 SizeHeightWidthDouble.NaN 值。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);
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2015 Microsoft