UIElement.MeasureCore(Size) Metod

Definition

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 availableSize som 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.

Gäller för