Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

UIElement.Arrange (Método)

Coloca los elementos secundarios y determina el tamaño de UIElement. Los elementos primarios llaman a este método desde su implementación de ArrangeCore (o un marco WPF equivalente) para formar una actualización de diseño recursiva. Este método constituye el segundo paso de una actualización de diseño.

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

public void Arrange(
	Rect finalRect
)

Parámetros

finalRect
Tipo: System.Windows.Rect
Tamaño final que el elemento primario calcula para el elemento secundario, proporcionado como una instancia de Rect.

Para los escenarios derivados de los elementos del marco WPF, no se debe cambiar el comportamiento de Arrange (y no se puede cambiar a menos que se sombree). En su lugar, debe invalidar la implementación ArrangeOverride en su clase. Arrange llama internamente a su implementación de ArrangeOverride como parte de las operaciones de diseño predeterminadas del marco WPF. La implementación de ArrangeCore también debe llamar a ArrangeOverride en cada elemento secundario, si tiene elementos secundarios.

Para los escenarios derivados de los elementos del núcleo de WPF, no se debe cambiar el comportamiento de Arrange (y no se puede cambiar a menos que se sombree). En su lugar, debe invalidar ArrangeCore en su clase. Arrange llama internamente a la implementación de ArrangeCore como parte de las operaciones de diseño predeterminadas del marco WPF. Sin embargo, esto supone que se está usando el diseño de marco WPF y su sistema de diseño, que no suele ser el caso si los elementos se derivan específicamente en el núcleo de WPF de la clase de elemento base UIElement. La implementación de ArrangeCore también debe llamar a Arrange en cada elemento secundario, si tiene elementos secundarios. Observe que el escenario del núcleo de WPF implica que no se está usando una clase derivada FrameworkElement, porque FrameworkElement sella ArrangeCore.

El cálculo de colocación del diseño del marco WPF en Windows Presentation Foundation (WPF) consta de una llamada a Measure y una llamada a Arrange. Durante la llamada a Measure, el sistema de diseño determina los requisitos de tamaño de un elemento usando un argumento Size (availableSize) proporcionado. Durante la llamada Arrange, el sistema del diseño finaliza el tamaño y posición del cuadro de límite de un elemento. Para obtener más información, vea Sistema de diseño.

availableSize puede ser cualquier número de cero a infinito. Los elementos que se van a disponer devuelven el valor Size mínimo que requieren a través del parámetro availableSize.

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 generalmente de forma asincrónica (en el momento determinado por el sistema de diseño). Un elemento podría no reflejar inmediatamente los cambios a las propiedades que afectan al tamaño de los elementos (como Width).

NotaNota

Las actualizaciones del diseño se pueden forzar mediante el método UpdateLayout; sin embargo, no se recomienda llamar a esta función, ya que normalmente es innecesario y puede disminuir el rendimiento. En muchas situaciones donde llamar a UpdateLayout podría ser adecuado, el sistema de diseño probablemente estará procesando ya las actualizaciones. El sistema de diseño puede procesar los cambios de diseño de tal manera que se optimicen todas las actualizaciones necesarias como parte de un paquete.

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 los elementos en el árbol visual. 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 se quitan automáticamente de la cola y los elementos se quitan automáticamente de la cola si ya son válidos.

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.

date

Historial

Motivo

Aclarado el párrafo en el cálculo de posición del diseño en Notas.

Comentarios de los clientes.

Mostrar: