UIElement.MeasureCore(Size) Método

Definición

Cuando se reemplaza en una clase derivada, proporciona lógica de medición para ajustar el tamaño de este elemento correctamente, teniendo en cuenta el tamaño de cualquier contenido de 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 llamadas al MeasureCore método y ArrangeCore en el mismo elemento.

  • La llamada a implementaciones base de no MeasureCore 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 FrameworkElementde UIElement . Si deriva de FrameworkElement, tenga en cuenta que una invalidación de MeasureCore en FrameworkElement sellar 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 podría ser el caso si está intentando crear su propia implementación en el nivel de núcleo 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 tamaño ni están organizados y desaparecerán de forma eficaz 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 que no hay restricciones solicitadas y aplaza eficazmente la elección de medida al elemento primario, a través de llamadas a Measure recursivas.

Las implementaciones pueden considerar el valor proporcionado para availableSize que sea una restricción temporal. El elemento secundario podría especificar un tamaño mayor, aunque otros aspectos del código de aplicación pudieran 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