UIElement.MeasureCore(Size) Metoda

Definicja

Gdy jest zastępowany w klasie pochodnej, zapewnia logikę pomiaru w celu poprawnego zmiany rozmiaru tego elementu, z uwzględnieniem rozmiaru dowolnej zawartości elementu podrzędnego.When overridden in a derived class, provides measurement logic for sizing this element properly, with consideration of the size of any child element content.

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.The available size that the parent element can allocate for the child.

Zwraca

Size

Wymagany rozmiar tego elementu w układzie.The desired size of this element in layout.

Przykłady

Typowy przesłonięcie MeasureCore następuje poniżej tego przybliżonego wzorca (nie istnieje Wbudowana kolekcja o nazwie VisualChildren ; VisualChildren jest symbolem zastępczym, który reprezentuje dowolną kolekcję podrzędną elementu).A typical override of MeasureCore follows this approximate pattern (there is not a built-in collection called VisualChildren; VisualChildren is a placeholder that represents whatever child collection your element maintains).

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 każdy element podrzędny.You must call Measure on each child element.

  • Ogólnie rzecz biorąc, implementacja powinna buforować informacje o pomiarach między MeasureCore ArrangeCore wywołaniami metody a i w tym samym elemencie.Generally, your implementation should cache measurement information between the MeasureCore and ArrangeCore method calls in the same element.

  • Wywoływanie podstawowych implementacji elementu MeasureCore nie jest wymagane, ale może być odpowiednie, jeśli podstawowa implementacja zapewnia odpowiednią możliwość układu.Calling base implementations of MeasureCore is not required, but might be appropriate if the base implementation provides a desired layout capability.

  • Wywołania Measure elementu podrzędnego powinny być takie same jak elementy availableSize nadrzędne lub podzbiór obszaru, w zależności od typu układu obsługiwanego przez element nadrzędny.Calls to Measure on child elements should pass either the same availableSize as the parent, or a subset of the area, depending on the type of layout the parent element supports. Na przykład, można usunąć obszar dla obramowania lub wypełnienia określonego dla elementu, ScrollBar lub kontrolki niestandardowej.For example, it would be valid to remove the area for an element-specific border or padding, a scrollbar, or a custom control.

Uwagi

Jest to bardziej powszechne do wygenerowania elementu FrameworkElement zamiast UIElement .It is more common to derive an element from FrameworkElement rather than UIElement. W przypadku wyprowadzania z programu FrameworkElement należy zauważyć, że przesłonięcie MeasureCore na FrameworkElement plomby MeasureCore metody.If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. W związku z tym, przesłonić tylko MeasureCore jako środek do zmiany charakterystyki miary układu, jeśli pochodzi od UIElement dziedziczenia, które nie obejmuje FrameworkElement .Therefore, you only override MeasureCore as a means to alter layout measure characteristics if you derive from UIElement through an inheritance that does not include FrameworkElement. Może się tak zdarzyć, jeśli próbujesz utworzyć własną implementację na WPFWPF poziomie podstawowym.This might be the case if you are attempting to build your own implementation on the WPFWPF core-level. W przeciwnym razie, jeśli pochodzą z programu FrameworkElement , szablon implementacji dla działania miary jest FrameworkElement implementacją programu. MeasureOverride .Otherwise, if you are deriving from FrameworkElement, then the implementation template for Measure behavior is the FrameworkElement implementation of .MeasureOverride.

Element nadrzędny z elementami podrzędnymi musi być wywoływana Measure dla każdego elementu podrzędnego, w przeciwnym razie te elementy podrzędne nie są skalowane ani układane i będą efektywnie znikać z układu.A parent element with child elements must call Measure on each child, otherwise these child elements are not sized or arranged and will effectively disappear from layout.

Uwagi dotyczące dziedziczenia

Implementacje muszą być w stanie przetworzyć podaną wartość availableSize , która jest nieskończona.Implementations must be able to process a value provided for availableSize that is infinite. Wartość nieskończoność nie wskazuje żadnych żądanych ograniczeń i efektywnie dokonuje wyboru pomiaru do elementu nadrzędnego, poprzez cykliczne wywołania miary.An infinite value indicates no requested constraints, and effectively defers measurement choice to the parent element, through recursive Measure calls.

Implementacje mogą rozważyć wartość podaną dla jako availableSize ograniczenie elastyczne.Implementations can consider the value provided for availableSize to be a soft constraint. Element podrzędny może określić większy rozmiar, nawet jeśli inne aspekty kodu aplikacji były w stanie określić bieżący rzeczywisty rozmiar elementu nadrzędnego.The child element might specify a larger size, even if other aspects of application code were able to determine the current actual size of the parent element. Żądanie dużego rozmiaru jest konwencją wskazującą, że element podrzędny jest pytany, czy element nadrzędny może obsługiwać przewijanie zawartości w regionie wyświetlania zawartości.The large size request is a convention that indicates that the child element is querying whether your parent element can support content scrolling within a content display region.

Dotyczy