Partager via


UIElement.MeasureCore(Size) Méthode

Définition

En cas de substitution dans une classe dérivée, fournit le code de mesure afin de dimensionner cet élément correctement, en considérant les dimensions de tout contenu d'élément enfant.

protected:
 virtual System::Windows::Size MeasureCore(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureCore (System.Windows.Size availableSize);
abstract member MeasureCore : System.Windows.Size -> System.Windows.Size
override this.MeasureCore : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureCore (availableSize As Size) As Size

Paramètres

availableSize
Size

Dimensions disponibles que l'élément parent peut allouer à l'enfant.

Retours

Size

Taille souhaitée de cet élément dans la disposition.

Exemples

Une substitution classique de MeasureCore ce modèle approximatif (il n’existe pas de collection intégrée appelée VisualChildren; VisualChildren est un espace réservé qui représente la collection enfant conservée par votre élément).

protected override Size MeasureCore(Size availableSize)
{
    foreach (UIElement child in VisualChildren)
    {
        child.Measure(availableSize);
        // call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child);
    }
    Size desired = CalculateBasedOnCache(_cache);
    return desired;
}
Protected Overrides Function MeasureCore(ByVal availableSize As Size) As Size
    For Each child As UIElement In VisualChildren
        child.Measure(availableSize)
        ' call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child)
    Next child
    Dim desired As Size = CalculateBasedOnCache(_cache)
    Return desired
End Function
  • Vous devez appeler Measure chaque élément enfant.

  • En règle générale, votre implémentation doit mettre en cache les informations de mesure entre les appels de méthode et ArrangeCore les MeasureCore appels dans le même élément.

  • L’appel des implémentations de base de MeasureCore n’est pas obligatoire, mais peut être approprié si l’implémentation de base fournit une fonctionnalité de disposition souhaitée.

  • Les appels à Measure des éléments enfants doivent passer le même availableSize que le parent, ou un sous-ensemble de la zone, en fonction du type de disposition pris en charge par l’élément parent. Par exemple, il serait valide de supprimer la zone d’une bordure ou d’un remplissage spécifique à un élément, d’une barre de défilement ou d’un contrôle personnalisé.

Remarques

Il est plus courant de dériver un élément à partir de FrameworkElement plutôt que UIElement. Si vous dérivez FrameworkElementde , notez qu’une substitution sur MeasureCore les FrameworkElement seals de la MeasureCore méthode. Par conséquent, vous remplacez MeasureCore uniquement comme moyen de modifier les caractéristiques de mesure de disposition si vous dérivez d’un UIElement héritage qui n’inclut FrameworkElementpas . Cela peut être le cas si vous tentez de créer votre propre implémentation au niveau du cœur WPF. Sinon, si vous dérivez de FrameworkElement, le modèle d’implémentation pour le comportement de mesure est l’implémentation FrameworkElement de .MeasureOverride.

Un élément parent avec des éléments enfants doit appeler Measure chaque enfant, sinon ces éléments enfants ne sont pas dimensionnés ou organisés et disparaîtront effectivement de la disposition.

Notes pour les héritiers

Les implémentations doivent être en mesure de traiter une valeur fournie pour availableSize cela est infinie. Une valeur infinie indique aucune contrainte demandée et reporte efficacement le choix de mesure à l’élément parent, par le biais d’appels de mesure récursifs.

Les implémentations peuvent considérer la valeur fournie comme availableSize une contrainte réversible. L’élément enfant peut spécifier une taille plus grande, même si d’autres aspects du code d’application ont pu déterminer la taille réelle actuelle de l’élément parent. La demande de grande taille est une convention qui indique que l’élément enfant interroge si votre élément parent peut prendre en charge le défilement du contenu dans une région d’affichage de contenu.

S’applique à