Språk

FrameworkElement.MeasureOverride(Size) Metod

Definition

När den åsidosättas i en härledd klass mäter den storlek i layouten som krävs för underordnade element och bestämmer en storlek för FrameworkElementklassen -derived.

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

Parametrar

availableSize
Size

Den tillgängliga storlek som det här elementet kan ge till underordnade element. Oändlighet kan anges som ett värde för att indikera att elementet kommer att storleksanpassas till det innehåll som är tillgängligt.

Returer

Storleken som det här elementet bestämmer den behöver under layouten, baserat på dess beräkningar av underordnade elementstorlekar.

Kommentarer

Åsidosätt MeasureOverride för att implementera anpassat layoutstorleksbeteende för ditt element när det deltar i layoutsystemet Windows Presentation Foundation (WPF). Implementeringen bör göra följande:

  1. Iterera elementets särskilda samling med underordnade objekt som ingår i layouten och anropa Measure varje underordnat element.

  2. Hämta DesiredSize omedelbart på underordnad (detta anges som en egenskap efter Measure anropas).

  3. Beräkna den önskade nettostorleken för den överordnade baserat på mätningen av de underordnade elementen.

Returvärdet MeasureOverride för ska vara elementets egen önskade storlek, som sedan blir måttindata för det överordnade elementet i det aktuella elementet. Samma process fortsätter genom layoutsystemet tills sidans rotelement har nåtts.

Under den här processen kan underordnade element returnera en större DesiredSize storlek än den första availableSize för att indikera att det underordnade elementet vill ha mer utrymme. Detta kan hanteras i din egen implementering genom att introducera en rullningsbar region, genom att ändra storlek på den överordnade kontrollen, genom att upprätta någon form av staplad ordning eller valfritt antal lösningar för att mäta eller ordna innehåll.

Important

Element bör anropa Measure varje underordnad under den här processen, annars kommer de underordnade elementen inte att vara korrekt storleksanpassade eller ordnade.

Anteckningar till arvingar

Följande kod som inte kompilerar visar det här implementeringsmönstret. VisualChildren representerar en uppräkningsbar samlingsegenskap för underordnade som ditt eget element ska definiera. Egenskapen kan namnges vad som helst. VisualChildren är ett platshållarnamn i det här exemplet är VisualChildren inte ett API som tillhandahålls av WPF eller en del av ett namngivningsmönster.

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

Gäller för