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.
En cas de substitution dans une classe dérivée, mesure la taille dans la disposition requise pour les éléments enfants et détermine une taille pour la FrameworkElementclasse dérivée.
protected:
virtual System::Windows::Size MeasureOverride(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureOverride(System.Windows.Size availableSize);
abstract member MeasureOverride : System.Windows.Size -> System.Windows.Size
override this.MeasureOverride : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureOverride (availableSize As Size) As Size
Paramètres
- availableSize
- Size
Taille disponible que cet élément peut donner aux éléments enfants. L’infini peut être spécifié en tant que valeur pour indiquer que l’élément sera dimensionné sur le contenu disponible.
Retours
Taille de cet élément détermine qu’il a besoin pendant la disposition, en fonction de ses calculs de tailles d’élément enfant.
Remarques
Remplacez MeasureOverride pour implémenter le comportement de dimensionnement de disposition personnalisé pour votre élément, car il participe au système de disposition Windows Presentation Foundation (WPF). Votre implémentation doit effectuer les opérations suivantes :
Itérer la collection particulière de votre élément d’enfants qui font partie de la disposition, appelez Measure chaque élément enfant.
Obtenez DesiredSize immédiatement sur l’enfant (il s’agit d’une propriété après Measure l’appel).
Calculez la taille nette souhaitée du parent en fonction de la mesure des éléments enfants.
La valeur de retour de MeasureOverride doit être la taille souhaitée de l’élément, qui devient ensuite l’entrée de mesure pour l’élément parent de l’élément actuel. Ce même processus se poursuit via le système de disposition jusqu’à ce que l’élément racine de la page soit atteint.
Pendant ce processus, les éléments enfants peuvent retourner une taille supérieure DesiredSize à la taille initiale availableSize pour indiquer que l’élément enfant souhaite plus d’espace. Cela peut être géré dans votre propre implémentation en introduisant une région à défilement, en redimensionnant le contrôle parent, en établissant une certaine manière d’ordre empilé, ou tout nombre de solutions pour mesurer ou réorganiser du contenu.
Important
Les éléments doivent appeler Measure chaque enfant pendant ce processus, sinon les éléments enfants ne seront pas correctement dimensionnés ou organisés.
Notes pour les héritiers
Le code non compilé suivant montre ce modèle d’implémentation.
VisualChildren représente une propriété de collection énumérable d’enfants que votre propre élément doit définir. La propriété peut être nommée n’importe quoi.
VisualChildren est un nom d’espace réservé à des fins de cet exemple, VisualChildren n’est pas une API fournie par WPF ou une partie d’un modèle d’affectation de noms.
protected override Size MeasureOverride(Size availableSize)
{
Size desiredSize = new Size();
foreach (UIElement child in VisualChildren)
{
child.Measure(availableSize);
// do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
// if greater than availableSize, must decide what to do and which size to return
}
// desiredSize = ... computed sum of children's DesiredSize ...;
// IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
// PositiveInfinity might be an availableSize input; this means that the parent does not care about sizing
return desiredSize;
}
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
Dim desiredSize As New Size()
For Each child As UIElement In VisualChildren
child.Measure(availableSize)
' do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
' if greater than availableSize, must decide what to do and which size to return
Next child
' desiredSize = ... computed sum of children's DesiredSize ...
' IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
' PositiveInfinity might be an availableSize input - this means that the parent does not care about sizing
Return desiredSize
End Function