FrameworkElement.MeasureOverride(Size) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit le comportement de la passe « Mesure » du cycle de disposition. Les classes peuvent remplacer cette méthode pour définir leur propre comportement de passe « Mesure ».
protected:
virtual Size MeasureOverride(Size availableSize) = MeasureOverride;
Size MeasureOverride(Size const& availableSize);
protected virtual Size MeasureOverride(Size availableSize);
function measureOverride(availableSize)
Protected Overridable Function MeasureOverride (availableSize As Size) As Size
Paramètres
- availableSize
- Size
Taille disponible que cet objet peut donner aux objets enfants. L’infini peut être spécifié en tant que valeur pour indiquer que l’objet sera dimensionné en fonction du contenu disponible.
Retours
Taille dont cet objet a besoin pendant la mise en page, en fonction de ses calculs des tailles allouées pour les objets enfants ou d’autres considérations telles qu’une taille de conteneur fixe.
Exemples
Cet exemple implémente MeasureOverride
pour personnaliser la logique de passage « Mesure » pour une implémentation de panneau personnalisé. Notez en particulier ces aspects 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 sur 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);
}
Remarques
Cette méthode a une implémentation par défaut qui effectue la disposition intégrée pour la plupart des classes dérivées de FrameworkElement .
MeasureOverride
fournit le comportement de Measure, chaque fois que Measure est appelé par la logique de disposition interne ou par le code de votre propre application, y compris les MeasureOverride
méthodes de votre propre pour d’autres classes. Si vous produisez un contrôle avec modèle, la logique définit la MeasureOverride
logique de disposition de passe « Mesure » spécifique de votre contrôle.
La conception générale de la façon dont les éléments passent par un processus de disposition lors de l’exécution de votre application est divisée en deux étapes : une passe « Mesure », puis une passe « Organiser ». Les auteurs de contrôles (ou les auteurs de panneaux) qui souhaitent personnaliser la passe « Mesure » du traitement de la disposition doivent remplacer MeasureOverride
. Votre implémentation doit effectuer les opérations suivantes :
- Itérer la collection particulière d’objets enfants de votre classe qui font partie de la disposition et appeler Measure sur chaque objet enfant.
- Obtenez immédiatement DesiredSize sur chaque enfant (cette propriété est définie en tant que propriété après l’appel de Measure ).
- Calculez la taille nette souhaitée du parent, en fonction de la mesure en cours d’exécution de la taille nécessaire pour les objets enfants.
La valeur de retour de
MeasureOverride
doit être la propre taille souhaitée de l’objet, qui devient ensuite l’entrée Measure pour le parent de l’objet actuel. Ce même processus se poursuit dans le système de disposition jusqu’à ce que la racine de l’arborescence page/objet soit atteinte. Au cours de ce processus, les objets enfants peuvent retourner une taille DesiredSize supérieure à la valeur initiale availableSize pour indiquer que l’objet enfant souhaite plus d’espace. Cela peut être géré dans votre propre implémentation en introduisant une région avec défilement, en redimensionnant le contrôle parent, en établissant un ordre empilé ou un certain nombre de solutions pour mesurer ou organiser le contenu qui peuvent varier en fonction des fonctionnalités prévues de votre conteneur de disposition.