Двухпроходный макет пользовательского интерфейса: почему?

Я заметил, что Android, WPF и Silverlight следуют двухпроходному шаблону компоновки. Существует рекурсивный метод Measure (), который вызывается для изменения размера элемента, возможно, несколько раз. Затем вызывается рекурсивный метод Layout / Arrange (), который определяет точные позиции дочерних элементов в их родительском элементе управления, а также устанавливает окончательный размер элемента управления.

Мой вопрос: почему это разделено на два прохода, особенно когда для некоторых типов элементов управления Measure () не может вычислить фактический размер элемента управления без фактического расположения дочерних элементов? Есть ли какой-то случай меньшинства макета, который стал возможным благодаря этому?

Я пытаюсь создать свой собственный набор инструментов пользовательского интерфейса, и в настоящее время я склоняюсь к однопроходному шаблону Layout (), но я бы хотел чтобы убедиться, разумно это или нет.

Спасибо, что прочитали это :)

Шон

10
задан Hanoixan 7 September 2010 в 09:23
поделиться