UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) Method

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.When overridden in a derived class, provides measurement logic for sizing this element properly, with consideration of the size of any child element content.

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 Size Size Size

Tamaño disponible que el elemento primario puede asignar para el elemento secundario.The available size that the parent element can allocate for the child.

Devoluciones

Tamaño deseado de este elemento en el diseño.The desired size of this element in layout.

Ejemplos

Una invalidación típica de MeasureCore sigue este patrón aproximado (no es una colección integrada denominada VisualChildren; VisualChildren es un marcador de posición que representa cualquier colección secundaria mantiene su elemento).A typical override of MeasureCore follows this approximate pattern (there is not a built-in collection called VisualChildren; VisualChildren is a placeholder that represents whatever child collection your element maintains).

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.You must call Measure on each child element.

  • Por lo general, la implementación debe almacenar en caché información de medida entre la MeasureCore y ArrangeCore llama al método en el mismo elemento.Generally, your implementation should cache measurement information between the MeasureCore and ArrangeCore method calls in the same element.

  • Llamar a las implementaciones base de MeasureCore no es necesario, pero podría ser adecuado si la implementación base proporciona una funcionalidad de diseño deseado.Calling base implementations of MeasureCore is not required, but might be appropriate if the base implementation provides a desired layout capability.

  • Las llamadas a Measure secundario elementos deben pasar la misma availableSize como el elemento primario o un subconjunto de la zona, según el tipo de diseño del elemento primario admite.Calls to Measure on child elements should pass either the same availableSize as the parent, or a subset of the area, depending on the type of layout the parent element supports. Por ejemplo, sería válido para quitar el área de relleno o un borde específico del elemento, una barra de desplazamiento o un control personalizado.For example, it would be valid to remove the area for an element-specific border or padding, a scrollbar, or a custom control.

Comentarios

Es más habitual para derivar un elemento de FrameworkElement lugar UIElement.It is more common to derive an element from FrameworkElement rather than UIElement. Si va a derivar de FrameworkElement, tenga en cuenta que una invalidación de MeasureCore en FrameworkElement sellos el MeasureCore método.If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. Por lo tanto, sólo reemplazar MeasureCore como un medio para modificar las características de la medida de diseño si deriva de UIElement a través de una herencia que no incluya FrameworkElement.Therefore, you only override MeasureCore as a means to alter layout measure characteristics if you derive from UIElement through an inheritance that does not include FrameworkElement. Esto puede suceder si intenta compilar su propia implementación en el WPFWPF nivel básico.This might be the case if you are attempting to build your own implementation on the WPFWPF core-level. En caso contrario, si va a derivar de FrameworkElement, a continuación, la plantilla de implementación para el comportamiento de la medida es el FrameworkElement implementación de.MeasureOverride.Otherwise, if you are deriving from FrameworkElement, then the implementation template for Measure behavior is the FrameworkElement implementation of .MeasureOverride.

Debe llamar un elemento primario con elementos secundarios Measure en cada elemento secundario, en caso contrario, estos elementos secundarios no o un tamaño organizados y desaparecerá de forma eficaz de diseño.A parent element with child elements must call Measure on each child, otherwise these child elements are not sized or arranged and will effectively disappear from layout.

Notas a los desarrolladores de herederos

Las implementaciones deben ser capaces de procesar un valor proporcionado para availableSize que es infinito.Implementations must be able to process a value provided for availableSize that is infinite. Un valor infinito indica ninguna restricción solicitada y transfiere la elección de medida para el elemento primario, a través de recursiva, que llama medida.An infinite value indicates no requested constraints, and effectively defers measurement choice to the parent element, through recursive Measure calls.

Las implementaciones pueden considerar el valor proporcionado para availableSize sea una restricción de software.Implementations can consider the value provided for availableSize to be a soft constraint. El elemento secundario podría especificar un tamaño mayor, incluso si otros aspectos del código de aplicación fueron capaces de determinar el tamaño real actual del elemento primario.The child element might specify a larger size, even if other aspects of application code were able to determine the current actual size of the parent element. La solicitud de gran tamaño es una convención que indica que el elemento secundario está consultando si el elemento primario puede admitir el desplazamiento del contenido dentro de una región de contenido que se muestra.The large size request is a convention that indicates that the child element is querying whether your parent element can support content scrolling within a content display region.

Se aplica a