UIElement.MeasureCore(Size) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
availableSizeque 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.