Udostępnij za pośrednictwem


UIElement.MeasureCore(Size) Metoda

Definicja

Podczas zastępowania w klasie pochodnej zapewnia logikę pomiaru prawidłowego określania rozmiaru tego elementu, przy uwzględnieniu rozmiaru dowolnej zawartości elementu podrzędnego.

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

Dostępny rozmiar, który element nadrzędny może przydzielić dla elementu podrzędnego.

Zwraca

Żądany rozmiar tego elementu w układzie.

Przykłady

Typowe zastąpienie jest zgodne z MeasureCore tym przybliżonym wzorcem (nie ma wbudowanej kolekcji o nazwie VisualChildren; VisualChildren jest symbolem zastępczym reprezentującym dowolną kolekcję podrzędną, którą utrzymuje element).

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
  • Należy wywołać Measure metodę dla każdego elementu podrzędnego.

  • Ogólnie rzecz biorąc, implementacja powinna buforować informacje o pomiarze między wywołaniami MeasureCore metody i ArrangeCore w tym samym elemecie.

  • Wywoływanie podstawowych implementacji elementu MeasureCore nie jest wymagane, ale może być odpowiednie, jeśli implementacja podstawowa zapewnia odpowiednią możliwość układu.

  • Wywołania elementu Measure podrzędnego powinny być przekazywane tak samo availableSize jak element nadrzędny lub podzbiór obszaru, w zależności od typu układu obsługiwanego przez element nadrzędny. Na przykład prawidłowe byłoby usunięcie obszaru dla obramowania specyficznego dla elementu lub wypełnienia, paska przewijania lub kontrolki niestandardowej.

Uwagi

Częściej element pochodzi z FrameworkElement elementu, a nie UIElement. Jeśli pochodzisz z FrameworkElementmetody , należy pamiętać, że zastąpienie MeasureCore metody FrameworkElement przy uszczelnieniu MeasureCore metody . W związku z tym przesłonięć MeasureCore jako metodę zmiany właściwości miary układu tylko wtedy, gdy pochodzisz z UIElement za pomocą dziedziczenia, które nie zawiera FrameworkElement. Może to być przypadek, jeśli próbujesz utworzyć własną implementację na poziomie rdzeniA WPF. W przeciwnym razie, jeśli pochodzisz z FrameworkElementklasy , szablon implementacji dla zachowania Miara jest implementacją FrameworkElement .MeasureOverride

Element nadrzędny z elementami podrzędnymi musi wywoływać Measure dla każdego elementu podrzędnego, w przeciwnym razie te elementy podrzędne nie mają rozmiaru ani ułożone i skutecznie znikną z układu.

Uwagi dotyczące dziedziczenia

Implementacje muszą być w stanie przetworzyć wartość podaną dla availableSize tej wartości jest nieskończona. Nieskończona wartość nie wskazuje żadnych żądanych ograniczeń i skutecznie odchyli wybór pomiaru do elementu nadrzędnego za pomocą cyklicznych wywołań miary.

Implementacje mogą uwzględniać podaną availableSize wartość jako ograniczenie miękkie. Element podrzędny może określać większy rozmiar, nawet jeśli inne aspekty kodu aplikacji były w stanie określić bieżący rzeczywisty rozmiar elementu nadrzędnego. Żądanie o dużym rozmiarze to konwencja wskazująca, że element podrzędny wykonuje zapytanie o to, czy element nadrzędny może obsługiwać przewijanie zawartości w regionie wyświetlania zawartości.

Dotyczy