FrameworkElement.MeasureOverride(Size) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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:
Iterera elementets särskilda samling med underordnade objekt som ingår i layouten och anropa Measure varje underordnat element.
Hämta DesiredSize omedelbart på underordnad (detta anges som en egenskap efter Measure anropas).
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