Exporter (0) Imprimer
Développer tout
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

FrameworkElement.MeasureOverride, méthode

En cas de substitution dans une classe dérivée, mesure les dimensions dans la disposition requise pour les éléments enfants et détermine une taille pour la classe dérivée de FrameworkElement.

Espace de noms :  System.Windows
Assembly :  PresentationFramework (dans PresentationFramework.dll)
protected virtual Size MeasureOverride(
	Size availableSize
)

Paramètres

availableSize
Type : System.Windows.Size
Taille disponible que l’élément peut attribuer aux éléments enfants. L'infini peut être indiqué comme valeur pour que l'élément se redimensionne en fonction du contenu disponible.

Valeur de retour

Type : System.Windows.Size
Taille déterminée comme nécessaire par l’élément pendant la disposition, selon ses calculs des tailles des éléments enfants.

Substituez MeasureOverride pour implémenter un comportement personnalisé de redimensionnement de disposition pour votre élément tel qu'il participe au système de disposition Windows Presentation Foundation (WPF). Votre implémentation doit effectuer les opérations suivantes :

  1. itérer la collection, spécifique à votre élément, d'enfants qui font partie de la disposition ; pour se faire, appelez Measure pour chaque élément enfant ;

  2. obtenir immédiatement la propriété DesiredSize de l'enfant (défini comme propriété après que Measure ait été appelé) ;

  3. calculer la taille totale voulue du parent d'après la mesure des éléments enfants.

La valeur de retour de MeasureOverride doit correspondre à la taille voulue propre à l'élément, qui devient à son tour l'entrée de la mesure pour l'élément parent de l'élément actif. Ce même processus continue à travers 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 des dimensions DesiredSize plus grandes que celles d'availableSize de départ pour indiquer que l'élément enfant nécessite plus d'espace. Ce cas de figure peut se gérer dans votre implémentation en introduisant une région 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.

Remarque importanteImportant

Les éléments doivent appeler Measure sur chaque enfant pendant ce processus, sinon les éléments enfants ne sont alors pas redimensionnés ou réorganisés correctement.

Remarques à l'attention des héritiers

Le code non compilation suivant illustre ce modèle d'implémentation. VisualChildren représente une propriété énumérable de collection des enfants que votre propre élément doit définir. La propriété peut avoir n'importe quel nom. VisualChildren est un nom d'espace réservé destiné à cet exemple, VisualChildren n'est pas un API tel que fourni 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;
}


Cet exemple montre comment substituer le comportement de disposition par défaut de l'élément Panel et créer des éléments de disposition personnalisés dérivés de Panel.

L'exemple définit un élément Panel personnalisé simple appelé PlotPanel qui positionne les éléments enfants d'après deux coordonnées x et y codées en dur. Dans cet exemple, x et y ont tous les deux la valeur 50 ; par conséquent, tous les éléments enfants sont positionnés à cet emplacement sur les axes x et y.

Pour implémenter des comportements Panel personnalisés, l'exemple utilise les méthodes MeasureOverride et ArrangeOverride. Chaque méthode retourne les données Size qui sont nécessaires pour positionner et restituer les éléments enfants.


public class PlotPanel : Panel
{
    // Default public constructor
    public PlotPanel()
        : base()
    {
    }

    // Override the default Measure method of Panel
    protected override Size MeasureOverride(Size availableSize)
    {
        Size panelDesiredSize = new Size();

        // In our example, we just have one child. 
        // Report that our panel requires just the size of its only child.
        foreach (UIElement child in InternalChildren)
        {
            child.Measure(availableSize);
            panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
    }
    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in InternalChildren)
        {
            double x = 50;
            double y = 50;

            child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
        }
        return finalSize; // Returns the final Arranged size
    }
}


.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

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