UIElement.Arrange(Rect) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Размещает дочерние элементы и определяет размер для UIElement. Родительские элементы вызывают этот метод из своей реализации ArrangeCore(Rect) (или эквивалента уровня инфраструктуры WPF) для формирования рекурсивного обновления макета. Этот метод образует второй проход обновления макета.
public:
void Arrange(System::Windows::Rect finalRect);
public void Arrange (System.Windows.Rect finalRect);
member this.Arrange : System.Windows.Rect -> unit
Public Sub Arrange (finalRect As Rect)
Параметры
- finalRect
- Rect
Окончательный размер, вычисляемый родительским элементом для дочернего элемента, представленного в виде экземпляра Rect.
Комментарии
Для сценариев наследования элементов на уровне платформы WPF поведение для Arrange не должно (и не может быть изменено, если вы не затеняете). Вместо этого следует переопределить реализацию ArrangeOverride в классе . Ваша ArrangeOverride реализация вызывается внутри Arrange как часть операций макета на уровне платформы WPF по умолчанию. Реализация ArrangeCore также должна вызывать ArrangeOverride для каждого дочернего элемента, если у нее есть дочерние элементы.
Для сценариев наследования элементов уровня ядра WPF поведение Arrange для не должно (и не может быть изменено, если вы не затеняете). Вместо этого следует переопределить ArrangeCore в классе . Ваша ArrangeCore реализация вызывается внутри Arrange как часть операций макета на уровне платформы WPF по умолчанию. Однако предполагается, что вы используете макет на уровне платформы WPF и его систему макета, что часто не так, если вы специально наследуете элементы на уровне ядра WPF от UIElement класса базовых элементов. Реализация ArrangeCore также должна вызывать Arrange для каждого дочернего элемента, если у нее есть дочерние элементы. Обратите внимание, что сценарий уровня ядра WPF подразумевает, что вы не используете производный FrameworkElement класс, так как FrameworkElement запечатывает ArrangeCore.
Вычисление размещения макета на уровне платформы WPF в Windows Presentation Foundation (WPF) состоит из Measure вызова и Arrange вызова.
Measure Во время вызова система макета определяет требования к размеру элемента с помощью предоставленного аргумента Size (availableSize
).
Arrange Во время вызова система макета завершает размер и положение ограничивающего прямоугольника элемента. Дополнительные сведения см. в разделе Макет.
availableSize
может быть любым числом от нуля до бесконечности. Выкладываемые элементы возвращают необходимый минимум Size с помощью availableSize
параметра .
При первом создании экземпляра макета он всегда получает Measure вызов перед Arrange. Однако после первого прохождения макета он может получить Arrange вызов без Measure. Это может произойти при изменении свойства, которое влияет только Arrange на него (например, выравнивание), или когда родительский Arrange объект получает без Measure. Вызов Measure автоматически сделает вызов недействительным Arrange .
Обновления макета обычно происходят асинхронно (в то время, определенное системой макета). Элемент может не сразу отражать изменения свойств, влияющие на размер элемента (например Width, ).
Примечание
Обновления макета можно принудительно выполнять с помощью UpdateLayout метода , однако вызывать эту функцию не рекомендуется, так как обычно это не требуется и может привести к снижению производительности. Во многих ситуациях, когда вызов UpdateLayout может быть уместным, система макета, вероятно, уже будет обрабатывать обновления. Система макета может обрабатывать изменения макета таким образом, чтобы оптимизировать все необходимые обновления в составе пакета.
Система макетов хранит две отдельные очереди недопустимых макетов: одну для Measure и одну для Arrange. Очередь макета сортируется на основе порядка элементов в визуальном дереве. Элементы выше в дереве находятся в верхней части очереди, чтобы избежать лишних макетов, вызванных повторяемыми изменениями в родительских элементах. Повторяющиеся записи автоматически удаляются из очереди, а элементы автоматически удаляются из очереди, если они уже допустимы.
При обновлении макета Measure сначала очищается очередь, а затем Arrange очередь. Элемент в Arrange очереди никогда не будет упорядочен, если в Measure очереди есть элемент .