UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) UIElement.MeasureCore(Size) Method

Определение

При переопределении в производном классе предоставляет логику измерений для правильного определения размеров данного элемента, с учетом размера каждого из содержащихся в нем дочерних элементов.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

Параметры

availableSize
Size Size Size Size

Доступный размер, который может быть выделен родительским элементом для дочернего.The available size that the parent element can allocate for the child.

Возвраты

Желательный размер этого элемента в макете.The desired size of this element in layout.

Примеры

Типичное переопределение MeasureCore следует за этим приблизительным шаблоном (отсутствует встроенная коллекция с именем VisualChildren; VisualChildren заполнитель, представляющий любую дочернюю коллекцию, которую обслуживает элемент.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
  • Необходимо вызвать Measure для каждого дочернего элемента.You must call Measure on each child element.

  • Как правило, ваша реализация должна кэшировать данные измерения между MeasureCore вызовами методов и ArrangeCore в одном и том же элементе.Generally, your implementation should cache measurement information between the MeasureCore and ArrangeCore method calls in the same element.

  • Вызов базовых реализаций MeasureCore не требуется, но может быть уместным, если базовая реализация предоставляет требуемую возможность макета.Calling base implementations of MeasureCore is not required, but might be appropriate if the base implementation provides a desired layout capability.

  • Вызовы к Measure дочерним элементам должны передавать то же availableSize значение, что и родительский элемент, или подмножество области, в зависимости от типа макета, поддерживаемого родительским элементом.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. Например, можно удалить область для границы или заполнения элемента, полосы прокрутки или пользовательского элемента управления.For example, it would be valid to remove the area for an element-specific border or padding, a scrollbar, or a custom control.

Комментарии

Чаще всего элемент наследуется от FrameworkElement , UIElementа не от.It is more common to derive an element from FrameworkElement rather than UIElement. Если вы наследуете от FrameworkElement, обратите внимание, что MeasureCore переопределение в MeasureCore FrameworkElement запечатывает метода.If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. Таким образом, вы переопределяете MeasureCore как средство для изменения характеристик меры макета, если вы наследуете от UIElement через наследование, 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. Это может быть так, если вы пытаетесь создать собственную реализацию на WPFWPF уровне ядра.This might be the case if you are attempting to build your own implementation on the WPFWPF core-level. В противном случае, если выполняется наследование от FrameworkElement, шаблон реализации для поведения меры FrameworkElement является реализацией.MeasureOverrideOtherwise, if you are deriving from FrameworkElement, then the implementation template for Measure behavior is the FrameworkElement implementation of .MeasureOverride.

Родительский элемент с дочерними элементами Measure должен вызываться для каждого дочернего элемента; в противном случае эти дочерние элементы не имеют размеров или упорядочены и будут фактически исчезнут из макета.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.

Примечания для тех, кто наследует этот метод

Реализации должны иметь возможность обрабатывать предоставленное для availableSize него значение бесконечно.Implementations must be able to process a value provided for availableSize that is infinite. Бесконечное значение указывает на отсутствие запрошенных ограничений и эффективно откладывает выбора измерения на родительский элемент с помощью рекурсивных вызовов меры.An infinite value indicates no requested constraints, and effectively defers measurement choice to the parent element, through recursive Measure calls.

Реализации могут рассматривать значение, предоставляемое для availableSize , как мягкое ограничение.Implementations can consider the value provided for availableSize to be a soft constraint. Дочерний элемент может указать больший размер, даже если другие аспекты кода приложения смогли определить текущий фактический размер родительского элемента.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. Запрос крупного размера — это соглашение, указывающее, что дочерний элемент запрашивает, может ли родительский элемент поддерживать прокрутку содержимого в пределах области отображения содержимого.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.

Применяется к