UIElement.MeasureCore(Size) Método

Definición

Cuando se invalida en una clase derivada, proporciona la lógica de medida para cambiar correctamente el tamaño este elemento, considerando el tamaño de cualquier contenido del elemento secundario.

protected:
 virtual System::Windows::Size MeasureCore(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureCore (System.Windows.Size availableSize);
abstract member MeasureCore : System.Windows.Size -> System.Windows.Size
override this.MeasureCore : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureCore (availableSize As Size) As Size

Parámetros

availableSize
Size

Tamaño disponible que el elemento primario puede asignar para el elemento secundario.

Devoluciones

Tamaño deseado de este elemento en el diseño.

Ejemplos

Una invalidación típica de MeasureCore sigue este patrón aproximado (no hay una colección integrada denominada VisualChildren; VisualChildren es un marcador de posición que representa la colección secundaria que mantiene el elemento).

protected override Size MeasureCore(Size availableSize)
{
    foreach (UIElement child in VisualChildren)
    {
        child.Measure(availableSize);
        // call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child);
    }
    Size desired = CalculateBasedOnCache(_cache);
    return desired;
}
Protected Overrides Function MeasureCore(ByVal availableSize As Size) As Size
    For Each child As UIElement In VisualChildren
        child.Measure(availableSize)
        ' call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child)
    Next child
    Dim desired As Size = CalculateBasedOnCache(_cache)
    Return desired
End Function
  • Debe llamar a Measure en cada elemento secundario.

  • Por lo general, la implementación debe almacenar en caché la información de medición entre las MeasureCore llamadas al método y ArrangeCore en el mismo elemento.

  • La llamada a implementaciones base de MeasureCore no es necesaria, pero puede ser adecuada si la implementación base proporciona una funcionalidad de diseño deseada.

  • Las llamadas a Measure en elementos secundarios deben pasar lo mismo availableSize que el elemento primario o un subconjunto del área, en función del tipo de diseño que admita el elemento primario. Por ejemplo, sería válido quitar el área de un borde o relleno específico del elemento, una barra de desplazamiento o un control personalizado.

Comentarios

Es más común derivar un elemento de en lugar de FrameworkElementUIElement. Si deriva de FrameworkElement, tenga en cuenta que una invalidación de MeasureCore en FrameworkElement sella el MeasureCore método . Por lo tanto, solo se invalida MeasureCore como medio para modificar las características de medida de diseño si se deriva de a través de UIElement una herencia que no incluye FrameworkElement. Este puede ser el caso si intenta crear su propia implementación en el nivel básico de WPF. De lo contrario, si deriva de FrameworkElement, la plantilla de implementación para el comportamiento measure es la FrameworkElement implementación de .MeasureOverride.

Un elemento primario con elementos secundarios debe llamar a Measure en cada elemento secundario; de lo contrario, estos elementos secundarios no tienen un tamaño ni están organizados y desaparecerán eficazmente del diseño.

Notas a los desarrolladores de herederos

Las implementaciones deben poder procesar un valor proporcionado para availableSize que sea infinito. Un valor infinito indica ninguna restricción solicitada y aplaza eficazmente la elección de medida al elemento primario mediante llamadas recursivas a Measure.

Las implementaciones pueden considerar el valor proporcionado para availableSize que sea una restricción temporal. El elemento secundario puede especificar un tamaño mayor, incluso si otros aspectos del código de aplicación pudieron determinar el tamaño real actual del elemento primario. La solicitud de tamaño grande es una convención que indica que el elemento secundario está consultando si el elemento primario puede admitir el desplazamiento de contenido dentro de una región de presentación de contenido.

Se aplica a