UIElement.Arrange(Rect) Método

Definición

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)

Parámetros

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.

Comentarios

En escenarios de derivación de elementos de nivel de marco de WPF, el comportamiento de Arrange no debe ser (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 ArrangeOverride implementación en la clase.Instead, you should override the ArrangeOverride implementation in your class. La ArrangeOverride implementación se llama internamente mediante Arrange 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 ArrangeCore implementación 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 debe ser (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. La ArrangeCore implementación se llama internamente mediante Arrange 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 UIElement clase de elemento base.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 ArrangeCore implementación 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 FrameworkElement clase derivada, 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) consta de una Measure llamada y una Arrange llamada.Computation of WPF framework-level layout positioning in Windows Presentation Foundation (WPF) consists of a Measure call and an Arrange call. Durante la Measure llamada, el sistema de diseño determina los requisitos de tamaño de un elemento mediante un Size availableSize argumento () proporcionado.During the Measure call, the layout system determines an element's size requirements using a provided Size (availableSize) argument. Durante la Arrange llamada, 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 mínimo Size necesario a través del availableSize parámetro.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 Measure llamada 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, es posible que reciba una Arrange llamada sin Measure ; esto puede ocurrir cuando se cambia una propiedad que solo afecta a Arrange (por ejemplo, la alineación) o cuando el elemento primario recibe un 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 Measure llamada invalidará automáticamente una Arrange llamada a.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).

Nota

Las actualizaciones de diseño se pueden forzar mediante el UpdateLayout método; 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 UpdateLayout las que la llamada 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 una 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, la Measure cola se vacía primero, seguida de la Arrange cola.When updating layout, the Measure queue is emptied first, followed by the Arrange queue. Un elemento de la Arrange cola no se organizará nunca si hay un elemento en la Measure cola.An element in the Arrange queue will never be arranged if there is an element in the Measure queue.

Se aplica a