UIElement.Arrange(Rect) Method

Definition

Coloca los elementos secundarios y determina un tamaño para un UIElement.Positions child elements and determines a size for a UIElement. Los elementos primarios llaman a este método desde su implementación de ArrangeCore(Rect) (o un equivalente de nivel de marco WPF) para formar una actualización de diseño recursiva.Parent elements call this method from their ArrangeCore(Rect) implementation (or a WPF framework-level equivalent) to form a recursive layout update. Este método constituye el segundo paso de una actualización de diseño.This method constitutes the second pass of a layout update.

public:
 void Arrange(System::Windows::Rect finalRect);
public void Arrange (System.Windows.Rect finalRect);
member this.Arrange : System.Windows.Rect -> unit
Public Sub Arrange (finalRect As Rect)

Parameters

finalRect
Rect

Tamaño final que el elemento primario calcula para el elemento secundario, y que se proporciona como una instancia Rect.The final size that the parent computes for the child element, provided as a Rect instance.

Remarks

En escenarios de derivación de elementos de nivel de marco de WPF, el comportamiento de Arrange no debería (y no puede, a menos que se Shadow) cambie.For WPF framework-level element deriving scenarios, behavior for Arrange should not (and cannot, unless you shadow) be changed. En su lugar, debe invalidar la implementación de ArrangeOverride en la clase.Instead, you should override the ArrangeOverride implementation in your class. Arrange llama a la implementación de ArrangeOverride internamente como parte de las operaciones predeterminadas de diseño de nivel de marco de WPF.Your ArrangeOverride implementation is called internally by Arrange as part of default WPF framework-level layout operations. La implementación de ArrangeCore también debe llamar a ArrangeOverride en cada elemento secundario, si tiene elementos secundarios.Your ArrangeCore implementation should also call ArrangeOverride on each child element, if it has child elements.

En el caso de escenarios de derivación de elementos de nivel básico de WPF, el comportamiento de Arrange no debería (y no puede, a menos que se Shadow) cambie.For WPF core-level element deriving scenarios, the behavior for Arrange should not (and cannot, unless you shadow) be changed. En su lugar, debe invalidar ArrangeCore en la clase.Instead, you should override ArrangeCore in your class. Arrange llama a la implementación de ArrangeCore internamente como parte de las operaciones predeterminadas de diseño de nivel de marco de WPF.Your ArrangeCore implementation is called internally by Arrange as part of default WPF framework-level layout operations. Sin embargo, se supone que se usa el diseño de nivel de marco de WPF y su sistema de diseño, que a menudo no es el caso si se derivan específicamente elementos en el nivel de núcleo de WPF de la clase de elemento base UIElement.However, this assumes you are using WPF framework-level layout and its layout system, which is often not the case if you are specifically deriving elements at the WPF core-level from the UIElement base element class. La implementación de ArrangeCore también debe llamar a Arrange en cada elemento secundario, si tiene elementos secundarios.Your ArrangeCore implementation should also call Arrange on each child element, if it has child elements. Tenga en cuenta que el escenario de nivel básico de WPF implica que no está utilizando una clase derivada FrameworkElement, porque FrameworkElement sella ArrangeCore.Note that the WPF core-level scenario implies that you are not using a FrameworkElement derived class, because FrameworkElement seals ArrangeCore.

El cálculo de la posición del diseño en el nivel de marco de WPF en Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) consta de una llamada Measure y una llamada Arrange.Computation of WPF framework-level layout positioning in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) consists of a Measure call and an Arrange call. Durante la llamada Measure, el sistema de diseño determina los requisitos de tamaño de un elemento mediante un argumento de Size (availableSize) proporcionado.During the Measure call, the layout system determines an element's size requirements using a provided Size (availableSize) argument. Durante la llamada Arrange, el sistema de diseño finaliza el tamaño y la posición del rectángulo de selección de un elemento.During the Arrange call, the layout system finalizes the size and position of an element's bounding box. Para obtener más información, vea Diseño.For more information, see Layout.

availableSize puede ser cualquier número comprendido entre cero y infinito.availableSize can be any number from zero to infinity. Los elementos que se van a disponer devuelven el Size mínimo que requieren a través del parámetro availableSize.Elements to be laid out return the minimum Size they require through the availableSize parameter.

Cuando se crea una instancia de un diseño por primera vez, siempre recibe una llamada Measure antes de Arrange.When a layout is first instantiated, it always receives a Measure call before Arrange. Sin embargo, después del primer paso de diseño, puede recibir una llamada Arrange sin un Measure; Esto puede ocurrir cuando se cambia una propiedad que afecta solo a Arrange (por ejemplo, la alineación) o cuando el elemento primario recibe una Arrange sin Measure.However, after the first layout pass, it may receive an Arrange call without a Measure; this can happen when a property that affects only Arrange is changed (such as alignment), or when the parent receives an Arrange without a Measure. Una llamada Measure invalidará automáticamente una llamada Arrange.A Measure call will automatically invalidate an Arrange call.

Normalmente, las actualizaciones de diseño se producen de forma asincrónica (en el momento determinado por el sistema de diseño).Layout updates generally occur asynchronously (at a time determined by the layout system). Un elemento podría no reflejar inmediatamente los cambios en las propiedades que afectan al tamaño de los elementos (como Width).An element might not immediately reflect changes to properties that affect element sizing (such as Width).

Note

Las actualizaciones de diseño se pueden forzar mediante el método UpdateLayout; sin embargo, no se recomienda llamar a esta función, ya que normalmente no es necesario y puede causar un bajo rendimiento.Layout updates can be forced by using the UpdateLayout method; however, calling this function is not recommended, as it is usually unnecessary and can cause poor performance. En muchas situaciones en las que la llamada a UpdateLayout puede ser adecuada, es probable que el sistema de diseño ya esté procesando actualizaciones.In many situations where calling UpdateLayout might be appropriate, the layout system will probably already be processing updates. El sistema de diseño puede procesar los cambios de diseño de forma que pueda optimizar todas las actualizaciones necesarias como parte de un paquete.The layout system can process layout changes in a manner that can optimize all necessary updates as part of a package.

El sistema de diseño mantiene dos colas independientes de diseños no válidos, una para Measure y otra para Arrange.The layout system keeps two separate queues of invalid layouts, one for Measure and one for Arrange. La cola de diseño se ordena según el orden de los elementos en el árbol visual.The layout queue is sorted based upon the order of elements in the visual tree. Los elementos situados más arriba en el árbol se encuentran en la parte superior de la cola, con el fin de evitar diseños redundantes causados por cambios repetidos en los elementos primarios.Elements higher in the tree are at the top of the queue, in order to avoid redundant layouts caused by repeated changes in parents. 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.Duplicate entries are automatically removed from the queue, and elements are automatically removed from the queue if they are already valid.

Al actualizar el diseño, se vacía primero la cola de Measure, seguida de la cola de Arrange.When updating layout, the Measure queue is emptied first, followed by the Arrange queue. Un elemento de la cola de Arrange nunca se organizará si hay un elemento en la cola de Measure.An element in the Arrange queue will never be arranged if there is an element in the Measure queue.

Applies to