UIElement.Measure(Size) Метод

Определение

Обновляет DesiredSize элемента UIElement.Updates the DesiredSize of a UIElement. Родительские элементы вызывают этот метод из своей собственной реализации MeasureCore(Size) для формирования рекурсивного обновление макета.Parent elements call this method from their own MeasureCore(Size) implementations to form a recursive layout update. Вызов этого метода составляет первый проход (проход "Мера") обновления макета.Calling this method constitutes the first pass (the "Measure" pass) of a layout update.

public:
 void Measure(System::Windows::Size availableSize);
public void Measure (System.Windows.Size availableSize);
member this.Measure : System.Windows.Size -> unit
Public Sub Measure (availableSize As Size)

Параметры

availableSize
Size

Доступное пространство, которое родительский элемент может выделить дочернему элементу.The available space that a parent element can allocate a child element. Дочерний элемент может запросить больше пространства, чем доступно; указанный размер может быть размещен, если для текущего элемента в модели содержимого возможна прокрутка.A child element can request a larger space than what is available; the provided size might be accommodated if scrolling is possible in the content model for the current element.

Комментарии

Вычисление позиционирования макета в Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) состоит из Measure вызова и Arrangeного вызова.Computation of layout positioning in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) is comprised of a Measure call and an Arrange call. Во время вызова Measure элемент определяет требования к размеру, используя входные данные availableSize.During the Measure call, an element determines its size requirements by using an availableSize input. Во время вызова Arrange размер элемента завершается.During the Arrange call, the element size is finalized.

availableSize может быть любым числом от нуля до бесконечности.availableSize can be any number from zero to infinite. Элементы, участвующие в макете, должны возвращать минимальный Size, необходимый для заданной availableSize.Elements participating in layout should return the minimum Size they require for a given availableSize.

При первом создании макета он всегда получает Measure вызов перед Arrange.When a layout is first instantiated, it always receives a Measure call before Arrange. Однако после первого прохода макета он может получить Arrange вызов без Measure; Это может произойти, когда изменяется свойство, влияющее только на Arrange (например, выравнивание), или когда родительский объект получает Arrange без Measure.However, after the first layout pass, it may receive an Arrange call without a Measure; this can happen when a property that affects only Arrange is changed (such as alignment), or when the parent receives an Arrange without a Measure. Вызов Measure автоматически сделает вызов Arrange недействительным.A Measure call will automatically invalidate an Arrange call.

Обновление макета происходит асинхронно, так что основной поток не ожидает каждого возможного изменения макета.Layout updates happen asynchronously, such that the main thread is not waiting for every possible layout change. Запрос элемента с помощью проверки значений свойств может не сразу отражать изменения свойств, взаимодействующих с характеристиками изменения размера или макета (например, свойства Width).Querying an element via code-behind checking of property values may not immediately reflect changes to properties that interact with the sizing or layout characteristics (the Width property, for example).

Примечание

Обновления макета можно принудительно использовать с помощью метода UpdateLayout.Layout updates can be forced by using the UpdateLayout method. Однако вызов этого метода обычно не нужен и может привести к снижению производительности.However, calling this method is usually unnecessary and can cause poor performance.

Система макета хранит две отдельные очереди недопустимых макетов, один для Measure и один для Arrange.The layout system keeps two separate queues of invalid layouts, one for Measure and one for Arrange. Очередь макета сортируется в соответствии с порядком элементов в визуальном дереве элемента, выполняющего компоновку. элементы, расположенные выше в дереве, находятся в верхней части очереди, чтобы избежать избыточных макетов, вызванных повторяющимися изменениями в родительских элементах.The layout queue is sorted based upon the order of elements in the visual tree of the element performing layout; elements higher in the tree are at the top of the queue, to avoid redundant layouts caused by repeated changes in parents. Дубликаты записей автоматически удаляются из очереди, а элементы автоматически удаляются из очереди, если они уже проверены макетом.Duplicate entries are automatically removed from the queue, and elements are automatically removed from the queue if they are already layout-validated.

При обновлении макета сначала очищается очередь Measure, а затем очередь Arrange.When updating layout, the Measure queue is emptied first, followed by the Arrange queue. Элемент в очереди Arrange не будет упорядочен, если в очереди Measure есть элемент.An element in the Arrange queue will never be arranged if there is an element in the Measure queue.

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