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.Measure (Método)

Actualiza la propiedad DesiredSize de UIElement. Los elementos primarios llaman a este método desde sus propias implementaciones de MeasureCore para formar una actualización recursiva del diseño. Llamar a este método constituye el primer paso (el paso de la "medida") de una actualización del diseño.

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

public void Measure(
	Size availableSize
)

Parámetros

availableSize
Tipo: System.Windows.Size
El espacio disponible que un elemento primario puede asignar a un elemento secundario. Un elemento secundario puede solicitar un espacio mayor del que está disponible; el tamaño proporcionado podría ajustarse si el desplazamiento es posible en el modelo de contenido del elemento actual.

El cálculo de colocación del diseño en Windows Presentation Foundation (WPF) consta de una llamada a Measure y una llamada a Arrange. Durante la llamada a Measure, un elemento determina sus requisitos de tamaño mediante una entrada availableSize. Durante la llamada a Arrange, el tamaño del elemento está finalizado.

availableSize puede ser cualquier número de cero a infinito. Los elementos que participan en el diseño deben devolver el valor Size mínimo que requieren para un availableSize dado.

Cuando se crea una instancia de un diseño por primera vez, siempre recibe una llamada de Measure antes de llamar a Arrange. Sin embargo, después del primer paso del diseño, puede recibir una llamada a Arrange sin Measure; esto puede pasar cuando se cambia una propiedad (como la alineación) que sólo afecta a Arrange o cuando el elemento primario recibe Arrange sin Measure. Una llamada a Measure invalida automáticamente una llamada a Arrange.

Las actualizaciones del diseño se producen de forma asincrónica, de tal forma que el subproceso principal no espera a cada posible cambio del diseño. Al consultar un elemento a través de la comprobación de código subyacente de los valores de la propiedad, no se pueden reflejar inmediatamente los cambios a las propiedades que interactúan con el tamaño o las características de diseño (la propiedad Width, por ejemplo).

NotaNota

Las actualizaciones de diseño se pueden forzar mediante el método UpdateLayout. Sin embargo, la llamada a este método suele ser innecesaria y disminuye el rendimiento.

El sistema de diseño mantiene dos colas independientes de diseños no válidos, una para Measure y otra para Arrange. La cola de diseño se ordena según el orden de elementos en el árbol visual del elemento que realiza el diseño; los primeros elementos del árbol están en la parte superior de la cola para evitar diseños redundantes producidos por cambios repetidos en los elementos primarios. Las entradas duplicadas y los elementos ya validados por el diseño se quitan automáticamente de la cola.

Al actualizar el diseño, se vacía en primer lugar la cola de Measure y, después, la cola de Arrange. Un elemento de la cola de Arrange nunca se organiza si hay un elemento en la cola de Measure.

This example shows how to override the default layout behavior of the Panel element and create custom layout elements that are derived from Panel.

The example defines a simple custom Panel element called PlotPanel, which positions child elements according to two hard-coded x- and y-coordinates. In this example, x and y are both set to 50; therefore, all child elements are positioned at that location on the x and y axes.

To implement custom Panel behaviors, the example uses the MeasureOverride and ArrangeOverride methods. Each method returns the Size data that is necessary to position and render child elements.


public class PlotPanel : Panel
{
    // Default public constructor
    public PlotPanel()
        : base()
    {
    }

    // Override the default Measure method of Panel
    protected override Size MeasureOverride(Size availableSize)
    {
        Size panelDesiredSize = new Size();

        // In our example, we just have one child. 
        // Report that our panel requires just the size of its only child.
        foreach (UIElement child in InternalChildren)
        {
            child.Measure(availableSize);
            panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
    }
    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in InternalChildren)
        {
            double x = 50;
            double y = 50;

            child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
        }
        return finalSize; // Returns the final Arranged size
    }
}


.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