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