UIElement.MeasureCore(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 det åsidosättas i en härledd klass tillhandahåller mätlogik för att storleksanpassa det här elementet korrekt, med hänsyn till storleken på eventuellt underordnat elementinnehåll.
protected:
virtual System::Windows::Size MeasureCore(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureCore(System.Windows.Size availableSize);
abstract member MeasureCore : System.Windows.Size -> System.Windows.Size
override this.MeasureCore : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureCore (availableSize As Size) As Size
Parametrar
- availableSize
- Size
Den tillgängliga storlek som det överordnade elementet kan allokera för det underordnade elementet.
Returer
Önskad storlek på det här elementet i layouten.
Exempel
En typisk åsidosättning av MeasureCore följer det här ungefärliga mönstret (det finns inte en inbyggd samling med namnet VisualChildren; VisualChildren är en platshållare som representerar den underordnade samling som elementet underhåller).
protected override Size MeasureCore(Size availableSize)
{
foreach (UIElement child in VisualChildren)
{
child.Measure(availableSize);
// call some method on child that adjusts child size if needed
_cache.StoreInfoAboutChild(child);
}
Size desired = CalculateBasedOnCache(_cache);
return desired;
}
Protected Overrides Function MeasureCore(ByVal availableSize As Size) As Size
For Each child As UIElement In VisualChildren
child.Measure(availableSize)
' call some method on child that adjusts child size if needed
_cache.StoreInfoAboutChild(child)
Next child
Dim desired As Size = CalculateBasedOnCache(_cache)
Return desired
End Function
Du måste anropa Measure varje underordnat element.
I allmänhet ska implementeringen cachelagrat mätinformation mellan MeasureCore - och ArrangeCore -metodanropen i samma element.
Det krävs inte att anropa grundläggande implementeringar av MeasureCore , men det kan vara lämpligt om basimplementeringen ger en önskad layoutfunktion.
Anrop till Measure på underordnade element bör skickas antingen samma
availableSizesom det överordnade eller en delmängd av området, beroende på vilken typ av layout det överordnade elementet stöder. Det skulle till exempel vara giltigt att ta bort området för en elementspecifik kantlinje eller utfyllnad, en rullningslist eller en anpassad kontroll.
Kommentarer
Det är vanligare att härleda ett element från FrameworkElement i stället UIElementför . Observera att en åsidosättning av på förseglar FrameworkElement metoden om du härleder från MeasureCore.FrameworkElementMeasureCore Därför åsidosätter MeasureCore du bara som ett sätt att ändra layoutmåttegenskaper om du härleder från UIElement genom ett arv som inte innehåller FrameworkElement. Detta kan vara fallet om du försöker skapa en egen implementering på WPF kärnnivå. Om du härleder från FrameworkElementär FrameworkElement implementeringsmallen för Måttbeteende implementeringen av .MeasureOverride.
Ett överordnat element med underordnade element måste anropa Measure varje underordnat element, annars är dessa underordnade element inte storleksanpassade eller ordnade och försvinner i praktiken från layouten.
Anteckningar till arvingar
Implementeringar måste kunna bearbeta ett värde som anges för availableSize det är oändligt. Ett oändligt värde anger inga begärda begränsningar och defersar effektivt måttvalet till det överordnade elementet via rekursiva måttanrop.
Implementeringar kan betrakta det angivna värdet som availableSize en mjuk begränsning. Det underordnade elementet kan ange en större storlek, även om andra aspekter av programkoden kunde fastställa den aktuella faktiska storleken för det överordnade elementet. Begäran om stor storlek är en konvention som anger att det underordnade elementet frågar om ditt överordnade element kan stödja innehållsrullning i en innehållsvisningsregion.