UIElement.MeasureCore(Size) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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.