FrameworkElement.MeasureOverride(Size) Metoda

Definice

Při přepsání v odvozené třídě měří velikost v rozložení vyžadované pro podřízené prvky a určuje velikost FrameworkElement pro odvozenou třídu.

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

Parametry

availableSize
Size

Dostupná velikost, kterou může tento prvek poskytnout podřízeným prvkům. Nekonečno lze zadat jako hodnotu, která označuje, že prvek bude mít velikost pro kterýkoli obsah, který je k dispozici.

Návraty

Size

Velikost, kterou tento prvek určuje během rozložení, na základě výpočtů velikostí podřízených prvků.

Poznámky

Přepsáním implementujete chování velikosti vlastního rozložení pro váš prvek, protože se účastní systému MeasureOverride rozložení Windows Presentation Foundation (WPF). Vaše implementace by měla provést následující:

  1. Iterovat konkrétní kolekci podřízených prvků, které jsou součástí rozložení, volejte Measure u každého podřízeného prvku.

  2. Okamžitě se DesiredSize dostanete na podřízený objekt (ten se nastaví jako vlastnost po Measure zavolána).

  3. Vypočítá požadovanou velikost nadřazeného prvku na základě měření podřízených prvků.

Návratovou hodnotou by měla být vlastní požadovaná velikost prvku, která se pak stane vstupem míry pro nadřazený MeasureOverride prvek aktuálního prvku. Stejný proces pokračuje v systému rozložení až do dosažení kořenového prvku stránky.

Během tohoto procesu mohou podřízené prvky vrátit větší velikost, než je počáteční hodnota, která označuje, že podřízený DesiredSize availableSize prvek chce více místa. To může být zpracováno ve vaší vlastní implementaci zavedením posouvání oblasti, změna velikosti nadřazeného ovládacího prvku, vytvořením nějakého způsobu skládaného pořadí nebo libovolným počtem řešení pro měření nebo uspořádání obsahu.

Důležité

Elementy by měly být během tohoto procesu volány u každého podřízeného elementu, jinak nebudou podřízené prvky správně nastaveny nebo Measure uspořádány.

Poznámky pro dědice

Následující ne kompilace kódu ukazuje tento vzor implementace. Visual Zastupuje vlastnost vyčíslitelné kolekce podřízených prvků, které by měl definovat váš vlastní prvek. Vlastnost může mít název cokoli. Visual Zastupuje zástupný název pro účely tohoto příkladu. Visual Zastupování vizuálu není rozhraní API poskytované WPF nebo část vzoru pojmenování.

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;
}

Platí pro