Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

UIElement.MeasureCore (Método)

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.

Espacio de nombres:  System.Windows
Ensamblado:  PresentationCore (en PresentationCore.dll)

protected virtual Size MeasureCore(
	Size availableSize
)

Parámetros

availableSize
Tipo: System.Windows.Size
Tamaño disponible que el elemento primario puede asignar para el elemento secundario.

Valor devuelto

Tipo: System.Windows.Size
Tamaño deseado de este elemento en el diseño.

Derivar un elemento de FrameworkElement es más común que derivarlo de UIElement. Si deriva de FrameworkElement, tenga en cuenta que una invalidación de MeasureCore en FrameworkElement sella el método MeasureCore. Por consiguiente, sólo invalida MeasureCore como un medio para modificar las características de medida del diseño si deriva de UIElement a través de una herencia que no incluye FrameworkElement. Éste podría ser el caso si intenta generar su propia implementación en el núcleo de WPF. De lo contrario, si deriva de FrameworkElement, la plantilla de implementación para el comportamiento de medida es la implementación FrameworkElement de MeasureOverride.

Un elemento primario con elementos secundarios debe llamar a Measure en cada elemento secundario; de lo contrario, no se cambia el tamaño de los elementos secundarios ni se organizan y, de hecho, desaparecen del diseño.

Notas para los herederos

Las implementaciones deben ser capaces de procesar un valor proporcionado para availableSize que sea infinito. Un valor infinito no indica ninguna restricción solicitada y transfiere la opción de medida al elemento primario, a través de llamadas recursivas al método Measure.

Las implementaciones pueden considerar que el valor proporcionado para availableSize es una restricción de software. 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 del tamaño grande es una convención que indica que el elemento secundario está consultando si el elemento primario puede admitir contenido que se desplaza dentro de una región de presentación de contenido.

Una invalidación típica de MeasureCore sigue este modelo aproximado (no hay una colección integrada llamada VisualChildren; VisualChildren es un marcador de posición que representa cualquier colección secundaria mantenida por 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;
}


  • Debe llamar a Measure en cada elemento secundario.

  • Generalmente, su implementación debe almacenar en memoria caché la información de medida entre las llamadas a los métodos MeasureCore y ArrangeCore en el mismo elemento.

  • No se requiere llamar a las implementaciones base de MeasureCore, pero podría ser adecuado si la implementación base proporciona una función de diseño que se desea usar.

  • Las llamadas a Measure en elementos secundarios deberían pasar el mismo valor de availableSize que el elemento primario o un subconjunto del área, según el tipo de diseño que el elemento primario admita. 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.

.NET Framework

Compatible con: 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft