Freigeben über


UIElement.Measure(Size) Methode

Definition

Updates die DesiredSize-Größe eines UIElements. In der Regel rufen Objekte, die ein benutzerdefiniertes Layout für ihre untergeordneten Layoutelemente implementieren, diese Methode aus ihren eigenen MeasureOverride-Implementierungen auf, um ein rekursives Layoutupdate zu bilden.

public:
 virtual void Measure(Size availableSize) = Measure;
void Measure(Size const& availableSize);
public void Measure(Size availableSize);
function measure(availableSize)
Public Sub Measure (availableSize As Size)

Parameter

availableSize
Size

Der verfügbare Speicherplatz, den ein übergeordnetes Objekt einem untergeordneten Objekt zuordnen kann. Ein untergeordnetes Objekt kann einen größeren Speicherplatz als verfügbar anfordern. Die angegebene Größe kann unter Umständen berücksichtigt werden, wenn in diesem container ein Bildlauf oder ein anderes Größenänderungsverhalten möglich ist.

Beispiele

In diesem Beispiel wird MeasureOverride implementiert, um die Passlogik "Measure" für eine benutzerdefinierte Panelimplementierung anzupassen. Beachten Sie insbesondere die folgenden Aspekte des Codes:

  • Iteriert kinder.
  • Ruft für jedes untergeordnete Element Measure auf, wobei eine Größe verwendet wird, die basierend darauf sinnvoll ist, wie die Panellogik die Anzahl der untergeordneten Elemente und ihr eigenes bekanntes Größenlimit behandelt.
  • Gibt seine Größe zurück (in diesem Fall gibt dieser einfache Bereich eine feste Größe und nicht eine Größe zurück, die beim Akkumulieren der Messungen berechnet wird).
// 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);
}

Hinweise

Der Measure-Aufruf erreicht möglicherweise eine MeasureOverride-Implementierung dieser spezifischen Klasse. Andernfalls weisen die meisten FrameworkElement-Klassen ein implizites Standardlayoutverhalten für Measure auf.

availableSize kann eine beliebige Zahl von 0 bis unendlich sein. Elemente, die am Layout teilnehmen, sollten die Mindestgröße zurückgeben, die sie für eine bestimmte verfügbare Größe benötigen.

Die Berechnung der anfänglichen Layoutpositionierung in einer XAML-Benutzeroberfläche besteht aus einem Measure-Aufruf und einem Anordnen-Aufruf in dieser Reihenfolge. Während des Measure-Aufrufs bestimmt das Layoutsystem die Größenanforderungen eines Elements mithilfe der availableSize-Messung . Während des Anordnen-Aufrufs finalisiert das Layoutsystem die Größe und Position des Begrenzungsrahmens eines Elements.

Wenn ein Layout zum ersten Mal erstellt wird, verfügt es immer über einen Measure-Aufruf, der vor Anordnen erfolgt. Nach dem ersten Layoutdurchlauf kann ein Anordnen-Aufruf jedoch ohne Measure erfolgen. Dies kann vorkommen, wenn eine Eigenschaft, die sich nur auf Anordnen auswirkt, geändert wird (z. B. Ausrichtung), oder wenn das übergeordnete Element ein Anordnen ohne Measure empfängt.

Bei einem Measure-Aufruf werden alle Anordnungsinformationen automatisch ungültig. Layoutupdates erfolgen in der Regel asynchron (zu einem zeitpunkt, der vom Layoutsystem bestimmt wird). Ein Element spiegelt Möglicherweise nicht sofort Änderungen an Eigenschaften wider, die sich auf die Elementdimensionierung (z. B. Width) auswirken.

Gilt für:

Weitere Informationen