Partage via


UIElement.Measure(Size) Méthode

Définition

Mises à jour le DesiredSize d’un UIElement. En règle générale, les objets qui implémentent une disposition personnalisée pour leurs enfants de disposition appellent cette méthode à partir de leurs propres implémentations MeasureOverride pour former une mise à jour de disposition récursive.

public:
 virtual void Measure(Size availableSize) = Measure;
void Measure(Size const& availableSize);
public void Measure(Size availableSize);
function measure(availableSize)
Public Sub Measure (availableSize As Size)

Paramètres

availableSize
Size

Espace disponible qu’un parent peut allouer à un objet enfant. Un objet enfant peut demander un espace plus grand que ce qui est disponible ; la taille fournie peut être prise en charge si le défilement ou un autre comportement de redimensionnement est possible dans ce conteneur particulier.

Exemples

Cet exemple implémente MeasureOverride pour personnaliser la logique de passage « Measure » pour une implémentation de panneau personnalisé. Notez en particulier les aspects suivants du code :

  • Itère sur les enfants.
  • Pour chaque enfant, appelle Measure, à l’aide d’une taille qui est logique en fonction de la façon dont la logique du panneau traite le nombre d’enfants et sa propre limite de taille connue.
  • Retourne sa taille (dans ce cas, ce panneau simple renvoie une taille fixe plutôt qu’une taille calculée lors de l’accumulation des mesures).
// First measure all children and return available size of panel
protected override Size MeasureOverride(Size availableSize)
{

    // Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    int i = 0;
    foreach (FrameworkElement child in Children)
    {
        if (i < 9)
        {
            child.Measure(new Size(100, 100));
        }
        else
        {
            child.Measure(new Size(0, 0));
        }

        i++;
    }


    // return the size available to the whole panel, which is 300x300
    return new Size(300, 300);
}
'First measure all children and return available size of panel 
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
    'Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    Dim i As Integer = 0
    For Each child As FrameworkElement In Children
        If i < 9 Then
            child.Measure(New Size(100, 100))
        Else
            child.Measure(New Size(0, 0))
        End If
        i += 1
    Next
    'return the size available to the whole panel, which is 300x300 
    Return New Size(300, 300)
End Function

Remarques

L’appel Measure atteint potentiellement une implémentation MeasureOverride de cette classe spécifique. Sinon, la plupart des classes FrameworkElement ont un comportement de disposition par défaut implicite pour Measure.

availableSize peut être n’importe quel nombre de zéro à infini. Les éléments participant à la disposition doivent retourner la taille minimale dont ils ont besoin pour une taille disponible donnée.

Le calcul du positionnement initial de la disposition dans une interface utilisateur XAML se compose d’un appel De mesure et d’un appel Arrange , dans cet ordre. Pendant l’appel Measure, le système de disposition détermine les exigences de taille d’un élément à l’aide de la mesure availableSize . Pendant l’appel Organiser , le système de disposition finalise la taille et la position du cadre englobant d’un élément.

Lorsqu’une disposition est générée pour la première fois, elle a toujours un appel De mesure qui se produit avant Arrange. Toutefois, une fois la première disposition passée, un appel d’organisation peut se produire sans qu’une mesure la précède. Cela peut se produire lorsqu’une propriété qui affecte uniquement Arrange est modifiée (par exemple, l’alignement), ou lorsque le parent reçoit une commande Arrange sans mesure.

Un appel de mesure invalide automatiquement toutes les informations d’organisation . Les mises à jour de disposition se produisent généralement de manière asynchrone (à un moment déterminé par le système de disposition). Un élément peut ne pas refléter immédiatement les modifications apportées aux propriétés qui affectent le dimensionnement de l’élément (par exemple , Width).

S’applique à

Voir aussi