Freigeben über


UIElement.Measure(Size) Methode

Definition

Updates desiredSize eines UIElements aus. 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 Platz, den ein übergeordnetes Element einem untergeordneten Objekt zuordnen kann. Ein untergeordnetes Objekt kann einen größeren Platz anfordern, als verfügbar ist. Die angegebene Größe kann berücksichtigt werden, wenn in diesem bestimmten Container bildlauf- oder andere 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 seine eigene bekannte Größenbeschränkung behandelt.
  • Gibt seine Größe zurück (in diesem Fall gibt dieser einfache Bereich eine feste Größe anstelle einer Größe zurück, die bei der Akkumulation 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);
}
'First measure all children and return available size of panel 
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
    'Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    Dim i As Integer = 0
    For Each child As FrameworkElement In Children
        If i < 9 Then
            child.Measure(New Size(100, 100))
        Else
            child.Measure(New Size(0, 0))
        End If
        i += 1
    Next
    'return the size available to the whole panel, which is 300x300 
    Return New Size(300, 300)
End Function

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 null bis unendlich sein. Elemente, die am Layout teilnehmen, sollten die Mindestgröße zurückgeben, die sie für eine bestimmte availableSize-Eigenschaft benötigen.

Die Berechnung der anfänglichen Layoutpositionierung in einer XAML-Benutzeroberfläche besteht aus einem Measure-Aufruf und einem Arrange-Aufruf in dieser Reihenfolge. Während des Measure-Aufrufs bestimmt das Layoutsystem die Größenanforderungen eines Elements mithilfe der availableSize-Messung . Während des Arrange-Aufrufs definiert 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 jedoch ein Arrange-Aufruf erfolgen, ohne dass ein Measure vorangegangen ist. Dies kann passieren, wenn eine Eigenschaft, die sich nur auf Arrange auswirkt, geändert wird (z. B. Ausrichtung), oder wenn das übergeordnete Element eine Anordnung ohne Measure empfängt.

Bei einem Measure-Aufruf werden alle Arrange-Informationen 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 auswirken (z. B. Breite).

Gilt für:

Weitere Informationen