Informations
Le sujet que vous avez demandé est indiqué ci-dessous. Toutefois, ce sujet ne figure pas dans la bibliothèque.

UIElement.Arrange, méthode

Positionne des éléments enfants et détermine une taille pour UIElement. Les éléments parents appellent cette méthode depuis leur implémentation ArrangeCore (ou un équivalent au niveau de l'infrastructure WPF) pour former une actualisation de disposition récursive. Cette méthode constitue la seconde passe d'une actualisation de disposition.

Espace de noms :  System.Windows
Assembly :  PresentationCore (dans PresentationCore.dll)

public void Arrange(
	Rect finalRect
)

Paramètres

finalRect
Type : System.Windows.Rect
La taille finale que le parent calcule pour l'élément enfant, fournie sous forme d'instance Rect.

Pour l'élément au niveau de l'infrastructure WPF dérivant des scénarios, le comportement pour Arrange ne doit pas (et ne peut pas, à moins d'en créer une copie fictive) être modifié. Vous devez dans ce cas substituer l'implémentation ArrangeOverride dans votre classe. Votre implémentation ArrangeOverride est appelée en interne par Arrange dans le cadre des opérations de disposition par défaut applicables au niveau de l'infrastructure WPF. Votre implémentation ArrangeCore doit également appeler ArrangeOverride à chaque élément enfant, s'il en existe.

Dans les scénarios de dérivation des éléments au niveau de l'infrastructure WPF, le comportement pour Arrange ne doit pas (et ne peut pas, à moins d'en créer une copie fictive) être modifié. Vous devez en fait substituer ArrangeCore dans votre classe. Votre implémentation ArrangeCore est appelée en interne par Arrange dans le cadre des opérations de disposition par défaut applicables au niveau de l'infrastructure WPF. Toutefois, cela suppose que vous utilisez la disposition au niveau de l'infrastructure WPF et son système de disposition, ce qui n'est pas souvent le cas si vous dérivez spécialement des éléments au niveau du noyau WPF à partir de la classe d'éléments de base UIElement. Votre implémentation ArrangeCore doit également appeler Arrange à chaque élément enfant, s'il en existe. Notez que le scénario de niveau du noyau WPF implique que vous n'utilisez pas de classe dérivée FrameworkElement, car FrameworkElement scelle ArrangeCore.

Le calcul de la disposition au niveau de l'infrastructure WPF dans Windows Presentation Foundation (WPF) se compose d'un appel Measure et d'un appel Arrange. Pendant l'appel Measure, le système de disposition détermine les spécifications de taille d'un élément à l'aide d'un argument Size (availableSize) fourni. Pendant l'appel Arrange, le système de disposition finalise la taille et la position du cadre englobant d'un élément. Pour plus d'informations, consultez Système de disposition.

availableSize peut correspondre à tout nombre de zéro à l'infinité. Les éléments à disposer retournent la valeur minimale de Size dont ils ont besoin, à travers le paramètre availableSize.

Lorsqu'une disposition est instanciée pour la première fois, il reçoit toujours un appel de Measure avant celui d'Arrange. Toutefois, il peut recevoir un appel d'Arrange sans Measureaprès le premier tour de mise en disposition. Cela peut arriver lorsqu'une propriété qui affecte uniquement Arrange est modifiée (tel que l'alignement) ou que le parent reçoit l'appel d'Arrange sans Measure. Un appel de Measure invalide alors automatiquement un appel d'Arrange.

Les actualisations de la disposition se produisent généralement de façon asynchrone (à un moment déterminé par le système de disposition). Un élément peut ne pas refléter immédiatement des modifications apportées à des propriétés qui affectent le dimensionnement d'éléments (tel que Width).

RemarqueRemarque

Les actualisations de disposition peuvent être forcées à l'aide de la méthode UpdateLayout ; toutefois, l'appel à cette fonction n'est pas recommandé puisqu'il est généralement inutile et peut dégrader les performances. Dans de nombreux cas où l'appel à UpdateLayout peut s'avérer utile, le système de disposition peut être déjà en train de traiter les actualisations. Le système de disposition peut traiter des modifications de disposition de façon à optimiser toutes les actualisations nécessaires dans le cadre d'un package.

Le système de disposition présente deux files d'attente distinctes pour les dispositions non valides : une pour Measure et une pour Arrange. La file d'attente de disposition est triée en fonction de l'ordre des éléments dans l'arborescence d'éléments visuels. Les éléments les plus en amont dans l'arborescence correspondent au début de la file d'attente, afin d'éviter des agencements redondants provoqués par des modifications répétées dans les parents. Les entrées en double sont automatiquement supprimées de la file d'attente et les éléments sont supprimés de la file d'attente s'ils sont déjà valides.

Lors de l'actualisation de la disposition, la file d'attente de Measure est d'abord vidée, puis celle d'Arrange. Un élément dans la file d'attente d'Arrange n'est jamais replacé dans la file s'il existe un élément dans la file d'attente 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

Pris en charge dans : 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Date

Historique

Motif

Le paragraphe sur le calcul du positionnement de la disposition indiqué dans Notes a été clarifié.

Commentaires client.

Ajouts de la communauté

Afficher:
© 2014 Microsoft