Język

FrameworkElement.MeasureOverride(Size) Metoda

Definicja

Gdy przesłonięta w klasie pochodnej, mierzy rozmiar w układzie wymaganym dla elementów podrzędnych i określa rozmiar klasy pochodnej FrameworkElement.

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

Dostępny rozmiar, który ten element może dać elementom podrzędnym. Nieskończoność można określić jako wartość, aby wskazać, że element będzie mieć rozmiar do dowolnej dostępnej zawartości.

Zwraca

Rozmiar, który ten element określa, że potrzebuje podczas układu, na podstawie obliczeń rozmiaru elementów podrzędnych.

Uwagi

Zastąp MeasureOverride w celu zaimplementowania niestandardowego zachowania określania rozmiaru układu dla elementu, ponieważ uczestniczy w systemie układu Windows Presentation Foundation (WPF). Implementacja powinna wykonywać następujące czynności:

  1. Iteruj konkretną kolekcję elementów podrzędnych, które są częścią układu, wywołaj element Measure podrzędny dla każdego elementu podrzędnego.

  2. Natychmiast pobierz DesiredSize element podrzędny (jest on ustawiany jako właściwość po Measure wywołaniu).

  3. Oblicz żądany rozmiar netto elementu nadrzędnego na podstawie pomiaru elementów podrzędnych.

Wartość zwracana MeasureOverride elementu powinna być własnym żądanym rozmiarem, który następnie staje się miarą danych wejściowych dla elementu nadrzędnego bieżącego elementu. Ten sam proces jest kontynuowany przez system układów do momentu osiągnięcia głównego elementu strony.

Podczas tego procesu elementy podrzędne mogą zwracać większy DesiredSize rozmiar niż początkowy availableSize , aby wskazać, że element podrzędny chce więcej miejsca. Może to być obsługiwane we własnej implementacji przez wprowadzenie przewijanego regionu, przez zmianę rozmiaru kontrolki nadrzędnej, ustanowienie pewnej kolejności skumulowanej lub dowolną liczbę rozwiązań do mierzenia lub rozmieszczania zawartości.

Ważna

Elementy powinny być wywoływane Measure dla każdego elementu podrzędnego w trakcie tego procesu, w przeciwnym razie elementy podrzędne nie będą poprawnie wymiarowane ani ułożone.

Notatki dotyczące dziedziczenia

Poniższy kod niekompilujący pokazuje ten wzorzec implementacji. VisualChildren reprezentuje właściwość kolekcji wyliczalnej elementów podrzędnych, którą powinien zdefiniować twój własny element. Właściwość może mieć nazwę dowolnego elementu. VisualChildren jest nazwą zastępczą na potrzeby tego przykładu, VisualChildren nie jest interfejsem API udostępnianym przez WPF lub częścią wzorca nazewnictwa.

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;
}
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
    Dim desiredSize As New Size()
    For Each child As UIElement 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
    Next child
    ' 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
End Function

Dotyczy