FrameworkElement.MeasureOverride(Size) Methode

Definition

Wenn sie in einer abgeleiteten Klasse überschrieben wird, misst die Größe im Layout, die für untergeordnete Elemente erforderlich ist, und bestimmt eine Größe für die FrameworkElementabgeleitete Klasse.

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

Parameter

availableSize
Size

Die verfügbare Größe, die dieses Element untergeordneten Elementen zuordnen kann. Infinity kann als Wert angegeben werden, um anzugeben, dass das Element auf den verfügbaren Inhalt angepasst wird.

Gibt zurück

Die Größe, die dieses Element während des Layouts benötigt, basierend auf seinen Berechnungen von untergeordneten Elementgrößen.

Hinweise

Überschreiben Sie MeasureOverride, um benutzerdefiniertes Layoutanpassungsverhalten für Ihr Element zu implementieren, da es am layoutsystem Windows Presentation Foundation (WPF) teilnimmt. Ihre Implementierung sollte folgende Aktionen ausführen:

  1. Durchlaufen Sie die bestimmte Sammlung untergeordneter Elemente, die Teil des Layouts sind, und rufen Sie Measure jedes untergeordnete Element auf.

  2. Rufen Sie DesiredSize sofort das untergeordnete Element auf (dies wird als Eigenschaft festgelegt, nachdem Measure sie aufgerufen wurde).

  3. Berechnen Sie die gewünschte Nettogröße des übergeordneten Elements basierend auf der Messung der untergeordneten Elemente.

Der Rückgabewert MeasureOverride sollte die eigene gewünschte Größe des Elements sein, was dann zur Measureeingabe für das übergeordnete Element des aktuellen Elements wird. Dieser Vorgang wird durch das Layoutsystem fortgesetzt, bis das Stammelement der Seite erreicht ist.

Während dieses Vorgangs geben untergeordnete Elemente möglicherweise eine größere DesiredSize Größe als die initiale availableSize zurück, um anzugeben, dass das untergeordnete Element mehr Platz wünscht. Dies kann in Ihrer eigenen Implementierung behandelt werden, indem ein bildlaufbarer Bereich eingeführt wird, indem die Größe des übergeordneten Steuerelements geändert wird, indem eine Art gestapelter Reihenfolge oder eine beliebige Anzahl von Lösungen zum Messen oder Anordnen von Inhalten festgelegt wird.

Important

Elemente sollten während dieses Prozesses jedes untergeordnete Element aufrufen Measure , andernfalls werden die untergeordneten Elemente nicht ordnungsgemäß angepasst oder angeordnet.

Hinweise für Vererber

Der folgende nicht kompilierende Code zeigt dieses Implementierungsmuster. VisualChildren stellt eine aufzählbare Auflistungseigenschaft von untergeordneten Elementen dar, die ihr eigenes Element definieren soll. Die Eigenschaft kann alles benannt werden. VisualChildren ist ein Platzhaltername für dieses Beispiel, VisualChildren keine API ist, die von WPF oder einem Teil eines Benennungsmusters bereitgestellt wird.

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;
}
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
    Dim desiredSize As New Size()
    For Each child As UIElement 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
    Next child
    ' 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
End Function

Gilt für: