Sdílet prostřednictvím


UIElement.MeasureCore(Size) Metoda

Definice

Při přepsání v odvozené třídě poskytuje logiku měření pro správné určení velikosti tohoto prvku s ohledem na velikost jakéhokoli obsahu podřízeného prvku.

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

Parametry

availableSize
Size

Dostupná velikost, kterou nadřazený prvek může přidělit pro podřízenou položku.

Návraty

Size

Požadovaná velikost tohoto prvku v rozložení.

Příklady

Typické přepsání tohoto přibližného MeasureCore vzoru (neexistuje předdefinovaná kolekce s názvem VisualChildren; VisualChildren je zástupný symbol, který představuje jakoukoli podřízenou kolekci, kterou váš prvek udržuje).

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
  • Je nutné volat Measure každý podřízený prvek.

  • Obecně platí, že vaše implementace by měla ukládat informace o měření mezi voláním MeasureCore metody do ArrangeCore mezipaměti ve stejném prvku.

  • Volání základních implementací MeasureCore není vyžadováno, ale může být vhodné, pokud základní implementace poskytuje požadovanou funkci rozložení.

  • Measure Volání podřízených prvků by měla předat buď stejné availableSize jako nadřazený prvek, nebo podmnožinu oblasti v závislosti na typu rozložení, které nadřazený prvek podporuje. Může být například platné odebrat oblast ohraničení nebo odsazení specifického prvku, posuvníku nebo vlastního ovládacího prvku.

Poznámky

Je běžnější odvodit prvek z FrameworkElement spíše než UIElement. Pokud pocházíte z FrameworkElement, mějte na paměti, že přepsání zapečetění MeasureCore FrameworkElement metody MeasureCore . Proto přepíšete MeasureCore pouze jako prostředek změnit vlastnosti míry rozložení, pokud jste odvozeni z UIElement dědičnosti, která nezahrnuje FrameworkElement. To může být případ, kdy se pokoušíte vytvořit vlastní implementaci na základní úrovni WPF. V opačném případě, pokud pocházíte z FrameworkElement, pak implementační šablona pro chování míry je FrameworkElement implementace .MeasureOverride.

Nadřazený prvek s podřízenými elementy musí volat Measure pro každou podřízenou položku, jinak tyto podřízené prvky nejsou velikosti nebo uspořádány a efektivně zmizí z rozložení.

Poznámky pro dědice

Implementace musí být schopné zpracovat hodnotu zadanou pro availableSize tuto hodnotu nekonečnou. Nekonečná hodnota značí žádná požadovaná omezení a efektivně vymění volbu měření nadřazeného prvku prostřednictvím rekurzivních volání míry.

Implementace můžou zvážit hodnotu, která availableSize má být měkkým omezením. Podřízený prvek může určit větší velikost, i když ostatní aspekty kódu aplikace dokázaly určit aktuální skutečnou velikost nadřazeného prvku. Požadavek velké velikosti je konvence, která označuje, že podřízený prvek dotazuje, jestli nadřazený prvek může podporovat posouvání obsahu v rámci oblasti zobrazení obsahu.

Platí pro