Freigeben über


FrameworkElement.MeasureOverride(Size) Methode

Definition

Misst beim Überschreiben in einer abgeleiteten Klasse die für untergeordnete Elemente im Layout benötigte Größe und bestimmt eine Größe für die von FrameworkElement abgeleitete 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 bereitstellen kann. „Unendlich“ kann als Wert angegeben werden, um festzulegen, dass das Element an die Größe des jeweiligen Inhalts angepasst wird.

Gibt zurück

Size

Die für dieses Element beim Layout benötigte Größe, basierend auf der Berechnung der Größen der untergeordneten Elemente.

Hinweise

Überschreiben Sie MeasureOverride , um benutzerdefiniertes Layout-Größenverhalten für Ihr Element zu implementieren, während es am Windows Presentation Foundation-Layoutsystem (WPF) beteiligt ist. Ihre Implementierung sollte folgende Schritte ausführen:

  1. Iterieren Sie die spezielle Auflistung der untergeordneten Elemente, die Teil des Layouts sind, und rufen Sie Measure für jedes untergeordnete Element auf.

  2. Unmittelbar auf dem untergeordneten Element abrufen DesiredSize (wird als Eigenschaft festgelegt, nachdem Measure aufgerufen wurde).

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

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

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

Wichtig

Elemente sollten während dieses Prozesses für jedes untergeordnete Element Measure aufrufen, andernfalls werden die untergeordneten Elemente nicht richtig dimensionieren oder angeordnet.

Hinweise für Vererber

Der folgende Nicht-Kompilierungscode zeigt dieses Implementierungsmuster. VisualChildren stellt eine aufzählbare Auflistungseigenschaft von untergeordneten Elementen dar, die ihr eigenes Element definieren soll. Die -Eigenschaft kann nach allem benannt werden. VisualChildren ist ein Platzhaltername für die Zwecke dieses Beispiels. VisualChildren ist keine API, wie sie 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;
}

Gilt für: