FrameworkElement.MeasureOverride Method

Stellt das Verhalten für den "Measure"-Schritt des Layoutzyklus bereit. Klassen können diese Methode außer Kraft setzen, um das eigene Verhalten beim "Measure"-Durchgang zu definieren.

Syntax


protected virtual Size MeasureOverride(
  Size availableSize
)

Parameter

availableSize

Typ: Size

Die verfügbare Größe, die dieses Objekt für untergeordnete Objekte bereitstellen kann. Sie können den Wert unendlich angeben, um festzulegen, dass das Objekt an die Größe jedes verfügbaren Inhalts angepasst wird.

Rückgabewert

Typ: Size

Die Größe, die dieses Objekt auf Grundlage der Berechnung der zugewiesenen Größenangaben für untergeordnete Objekte oder möglicherweise anderer Aspekte wie der festen Containergröße bestimmt und während des Layouts benötigt.

Hinweise

Diese Methode verfügt über eine Standardimplementierung, die integriertes Layout für die meisten abgeleiteten FrameworkElement-Klassen ausführt. MeasureOverride stellt das Verhalten für Measure bereit, sobald Measure entweder durch interne Layoutlogik oder durch Code Ihrer eigenen App aufgerufen wird, einschließlich jeder Ihrer MeasureOverride-Methoden für andere Klassen. Wenn Sie ein vorlagenbasiertes Steuerelement erstellen, definiert die MeasureOverride -Logik die spezifische Layoutlogik für den "Measure"-Schritt.

Der allgemeine Entwurf dazu, wie Elemente einen Layoutprozess durchlaufen, wenn die App ausgeführt wird, ist in zwei Schritte unterteilt: eine "Measure"-Übergabe und dann eine "Arrange"-Übergabe. Steuerelementautoren (oder Bereichsentwickler), die die "Measure"-Übergabe der Layoutverarbeitung anpassen möchten, müssen MeasureOverride überschreiben. Die Implementierung sollte folgende Schritte ausführen:

  • Durchlaufen Sie die spezielle Auflistung untergeordneter Objekte der Klasse, und rufen Sie Measure für jedes untergeordnete Objekt auf.
  • Sofortiges Abrufen von DesiredSize für jedes untergeordnete Element (dies wird als Eigenschaft festgelegt, nachdem Measure aufgerufen wurde).
  • Berechnen Sie die gewünschte Nettogröße des übergeordneten Objekts auf Grundlage der aktuell ausgeführten Messung der für untergeordnete Objekte erforderlichen Größe.

Der Rückgabewert von MeasureOverride muss die gewünschte Größe des Objekts sein, die dann zur Measure-Eingabe für das übergeordnete Objekt des aktuellen Objekts wird. Dieser Prozess wird im Layoutsystem fortgesetzt, bis das Stammelement der Seite/Objektstruktur erreicht ist. Während dieses Prozesses können untergeordnete Objekte eine größere DesiredSize als die anfängliche availableSize zurückgeben, um anzugeben, dass das untergeordnete Objekt mehr Platz benötigt. In Ihrer Implementierung kann dies durch das Erstellen eines bildlauffähigen Bereichs, durch das Anpassen der Größe des übergeordneten Steuerelements, durch das Einrichten einer Stapelreihenfolge oder durch eine beliebige Anzahl von Projektmappen zum Messen oder Anordnen von Inhalt behandelt werden, was je nach der beabsichtigten Funktionalität des Layoutcontainers unterschiedlich sein kann.

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

FrameworkElement
Measure
ArrangeOverride
Schnellstart: Definieren von Layouts

 

 

Anzeigen:
© 2014 Microsoft