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

FrameworkElement.MeasureOverride 方法

2013/12/13

提供 Windows Phone 布局的度量处理过程的行为。 类可以重写该方法来定义其自己的度量处理过程行为。

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

protected virtual Size MeasureOverride(
	Size availableSize
)

参数

availableSize
类型: System.Windows.Size
此对象可以赋给子对象的可用大小。 可以指定无穷大值 (Double.PositiveInfinity),以指示对象的大小将调整为可用内容的大小。

返回值

类型: System.Windows.Size
此对象在布局过程中基于其对子对象分配大小的计算或者基于固定容器大小等其他因素而确定的它所需的大小。

此方法具有可为多数 Windows Phone FrameworkElement 类执行内置布局的默认实现。

每次通过内部布局逻辑或应用程序代码调用该方法时,MeasureOverride 有效地提供 Measure 的其他实现。 如果您正在生成可发布的内容控件,MeasureOverride 逻辑定义了您的控件的特定“测量”的处理过程布局逻辑。

对继承者的说明

对于 Windows Phone,在布局中调整元素大小和定位元素的方法可分为两个步骤: 测量处理过程,然后排列处理过程。 主题 Windows Phone 的布局中对此技术进行了更详细的说明。

重写 MeasureOverride,以便在类参与 Windows Phone 布局系统时实现类的自定义布局大小调整行为。 实现时应执行以下任务:

  • 循环访问类的特定子对象集合(属于布局的一部分),并对每个子对象调用 Measure

  • 直接在每个子级上获取 DesiredSize(该对象将在调用 Measure 后设置为一个属性)。

  • 根据子对象所需的连续测量大小,计算父级所需的净大小。

MeasureOverride 的返回值应为对象自身的所需大小,然后,该大小将成为当前对象父级的度量输入。 这一过程将通过布局系统一直执行下去,直到到达页/对象树的根部。

在此过程中,子对象返回的 DesiredSize 大小可能会大于初始的 availableSize,这表示子对象要求更多空间。 这可以在您自己的实现中通过以下方式进行处理:引入可滚动区域,调整父级控件大小,建立某种方式的堆叠顺序,或用于度量或排列可根据布局容器的预期功能而改变的内容的任何数量的解决方案。

下面的示例实现了 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

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft