Бөлісу құралы:


UIElement.MeasureCore(Size) Метод

Определение

При переопределении в производном классе предоставляет логику измерений для правильного определения размеров данного элемента, с учетом размера каждого из содержащихся в нем дочерних элементов.

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

Желательный размер этого элемента в макете.

Примеры

Типичный переопределение MeasureCore следует этому приблизительному шаблону (не вызывается VisualChildrenвстроенная коллекция; VisualChildren это заполнитель, представляющий любую дочернюю коллекцию, которую поддерживает элемент).

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 каждый дочерний элемент.

  • Как правило, реализация должна кэшировать сведения об измерениях MeasureCore между вызовами и ArrangeCore вызовами метода в одном элементе.

  • Вызов базовых реализаций MeasureCore не является обязательным, но может быть подходящим, если базовая реализация предоставляет необходимую возможность макета.

  • Measure Вызовы дочерних элементов должны передаваться availableSize как родительские, так и подмножество области в зависимости от типа макета, который поддерживает родительский элемент. Например, было бы допустимо удалить область для границы или заполнения элемента, полосы прокрутки или пользовательского элемента управления.

Комментарии

Чаще всего наследуется элемент, FrameworkElement а не UIElement. Если вы наследуете, FrameworkElementобратите внимание, что переопределение MeasureCore на FrameworkElement запечатывает MeasureCore метод. Таким образом, переопределяется MeasureCore только в качестве средства изменения характеристик меры макета, если вы наследуете наследование UIElement , которое не включает FrameworkElement. Это может быть так, если вы пытаетесь создать собственную реализацию на уровне ядра WPF. В противном случае, если вы наследуете от FrameworkElement, шаблон реализации для поведения Measure является FrameworkElement реализацией .MeasureOverride.

Родительский элемент с дочерними элементами должен вызываться Measure для каждого дочернего элемента, в противном случае эти дочерние элементы не имеют размера или упорядочения и фактически исчезают из макета.

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

Реализации должны иметь возможность обрабатывать значение, предоставленное для availableSize этого бесконечно. Бесконечное значение указывает на отсутствие запрошенных ограничений и фактически откладывает выбор измерения родительскому элементу с помощью рекурсивных вызовов Measure.

Реализации могут рассматривать значение, предоставленное для availableSize мягкого ограничения. Дочерний элемент может указать больший размер, даже если другие аспекты кода приложения смогли определить текущий фактический размер родительского элемента. Запрос большого размера — это соглашение, указывающее, что дочерний элемент запрашивает, может ли родительский элемент поддерживать прокрутку содержимого в области отображения содержимого.

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