FrameworkElement.MeasureOverride Method

Fournit le comportement de la passe de mesure ("Measure") du cycle de disposition. Les classes peuvent substituer cette méthode pour définir leur propre comportement lors de la passe de mesure ("Measure").

Syntaxe


protected virtual Size MeasureOverride(
  Size availableSize
)

Paramètres

availableSize

Type: Size

La taille disponible que cet objet peut attribuer à des objets enfants. L'infini peut être indiqué comme valeur pour que l'objet se redimensionne en fonction du contenu disponible.

Valeur de retour

Type: Size

Taille nécessaire déterminée par cet objet pendant la disposition, selon ses calculs des dimensions attribuées aux objets enfants ou selon d'autres considérations telles que la taille de conteneur fixe.

Remarques

Cette méthode a une implémentation par défaut qui exécute la disposition intégrée pour la plupart des classes dérivées FrameworkElement. MeasureOverride fournit le comportement de Measure, chaque fois que Measure est appelé par la logique de disposition interne ou le code de votre propre application, y compris toutes les méthodes MeasureOverride que vous utilisez pour d'autres classes. Si vous produisez un contrôle basé sur un modèle, la logique MeasureOverride définit la logique de disposition de passe de mesure ("Measure") spécifique de votre contrôle.

La conception générale de la façon dont les éléments traversent un processus de disposition lorsque votre application fonctionne se divise en deux étapes : une passe "Measure", puis une passe "Arrange". Les auteurs de contrôle (ou auteurs de panneaux) qui veulent personnaliser la passe de mesure ("Measure") du traitement de la disposition doivent substituer MeasureOverride. Votre implémentation doit effectuer les opérations suivantes :

  • Itère au sein de la collection, spécifique à votre classe, d'objets enfants qui font partie de la disposition et appelle Measure sur chaque objet enfant.
  • Obtient immédiatement DesiredSize pour chaque enfant (défini comme propriété après l'appel de Measure).
  • Calcule la taille totale souhaitée du parent d'après la mesure à l'exécution de la taille nécessaire aux objets enfants.

La valeur de retour de MeasureOverride doit correspondre à la taille voulue propre à l'objet, qui devient à son tour l'entrée Measure pour le parent de l'objet actif. Ce même processus se poursuit à travers le système de disposition jusqu'à ce que la racine de la page/l'arborescence des objets soit atteinte. Pendant ce processus, les objets enfants peuvent retourner une taille DesiredSize supérieure à la valeur availableSize initiale pour indiquer que l'objet enfant nécessite plus d'espace. Ce cas de figure peut se gérer dans votre implémentation en introduisant une zone déroulante, en redimensionnant le contrôle parent, en établissant un ordre d'empilement donné ou par toute autre solution permettant la mesure ou la réorganisation du contenu qui peut varier suivant les fonctionnalités prévues de votre conteneur de disposition.

Exemples

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

  • Itère au sein des enfants.

  • Pour chaque enfant, appelle Measure, en utilisant une valeur Size appropriée en fonction de la manière dont la logique de panneau traite le nombre d'enfants et sa propre limite de taille connue.

  • Retourne sa taille (dans ce cas, ce panneau simple retourne une taille fixe plutôt qu'une taille calculée en additionnant les 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);
}


Configuration requise

Client minimal pris en charge

Windows 8

Serveur minimal pris en charge

Windows Server 2012

Espace de noms

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Métadonnées

Windows.winmd

Voir aussi

FrameworkElement
Measure
ArrangeOverride
Démarrage rapide : définition des dispositions

 

 

Afficher:
© 2014 Microsoft. Tous droits réservés.