Exporter (0) Imprimer
Développer tout
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

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 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.

Cet exemple montre comment substituer le comportement de disposition par défaut de l'élément Panel et créer des éléments de disposition personnalisés dérivés de Panel.

L'exemple définit un élément Panel personnalisé simple appelé PlotPanel qui positionne les éléments enfants d'après deux coordonnées x et y codées en dur. Dans cet exemple, x et y ont tous les deux la valeur 50 ; par conséquent, tous les éléments enfants sont positionnés à cet emplacement sur les axes x et y.

Pour implémenter des comportements Panel personnalisés, l'exemple utilise les méthodes MeasureOverride et ArrangeOverride. Chaque méthode retourne les données Size qui sont nécessaires pour positionner et restituer les éléments enfants.


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.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

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.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft