Erweitern Minimieren

UIElement.Measure Method

Aktualisiert die DesiredSize eines UIElement. Objekte, die benutzerdefiniertes Layout für die untergeordneten Layoutelemente implementieren, rufen diese Methode i. d. R. aus den eigenen MeasureOverride-Implementierungen auf, um ein rekursives Layoutupdate durchzuführen.

Syntax


public void Measure(
  Size availableSize
)

Parameter

availableSize

Typ: Size

Der verfügbare Speicherplatz, den ein übergeordnetes Objekt für ein untergeordnetes Objekt reservieren kann. Ein untergeordnetes Objekt kann mehr Speicherplatz erfordern, als verfügbar ist. Die angegebene Größe kann zugewiesen werden, wenn Bildlaufvorgänge oder anderes Größenänderungsverhalten in diesem speziellen Container möglich sind.

Hinweise

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

availableSize kann eine beliebige Zahl von 0 (null) bis unendlich annehmen. Elemente eines Layouts sollten die minimale Size zurückgeben, die für eine bestimmte availableSize erforderlich ist.

Die Berechnung der ursprünglichen Layoutpositionierung in einer XAML Benutzeroberfläche besteht aus einem Measure-Aufruf und einem Arrange-Aufruf, in dieser Reihenfolge. Während des Aufrufs von Measure bestimmt das Layoutsystem die Größenanforderungen eines Elements mithilfe der availableSize-Messung. Während des Arrange-Aufrufs schließt das Layoutsystem die Größe und die Position des umgebenden Felds eines Elements ab.

Wenn ein Layout erstmalig erzeugt wird, verfügt es immer über einen Measure-Aufruf, der vor Arrange stattfindet. Nach dem ersten Layoutdurchlauf kann jedoch ein Arrange-Aufruf auftreten, ohne dass ihm eine Measure vorausgeht. Dies kann auftreten, wenn eine Eigenschaft, die nur Arrange betrifft, geändert wird (z. B. Ausrichtung) oder wenn das übergeordnete Element Arrange ohne Measure empfängt.

Bei einem Measure-Aufruf werden alle Arrange-Informationen automatisch ungültig. Layoutaktualisierungen treten generell asynchron auf (zu einem vom Layoutsystem bestimmten Zeitpunkt). Möglicherweise spiegelt ein Element die Änderungen an Eigenschaften nicht sofort wider, die sich auf die Elementgröße auswirken (beispielsweise Width).

Beispiele

Dieses Beispiel implementiert MeasureOverride, um die "Measure"-Übergabelogik für die Implementierung eines benutzerdefinierten Bereichs anzupassen. Beachten Sie insbesondere die folgenden Aspekte des Codes:

  • Durchläuft untergeordnete Elemente.

  • Ruft für jedes untergeordnete Element Measure auf und verwendet ein Size-Element, das je nachdem, wie die Bereichslogik die Anzahl an untergeordneten Elementen und der eigenen bekannten Größenbeschränkung behandelt, sinnvoll ist.

  • Gibt die Größe des Elements zurück (in diesem Fall gibt dieser einfache Bereich eine feste Größe statt einer Größe zurück, die anhand der Akkumulierung der Maße berechnet wurde).


// 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);
}


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadaten

Windows.winmd

Siehe auch

UIElement
MeasureOverride
ArrangeOverride
Schnellstart: Definieren von Layouts

 

 

Anzeigen:
© 2014 Microsoft