Я реализовал систему GUI, в значительной степени вдохновленную системой макетов WPF Measure and Arrange для игры. Хотя он отлично работает с DockPanels и StackPanels, недавно мне понадобилось использовать WrapPanels. Я обнаружил, что в своем нынешнем состоянии моя система с графическим интерфейсом не поддерживает перенос, потому что мне нужно знать максимальный доступный размер на основе предков, и мои измерения в настоящее время выполняются без этой информации.
Я проверил документацию WPF и обнаружил, что их метод Measure
принимает ограничение размера в качестве параметра: Size Measure(Size availableSize)
. Это озадачивает меня. Насколько я понимаю, WPF сначала выполняет измерение от листьев до корня, а затем - от корня до листьев. Однако, в этом случае, доступный размер от предков необходим в то время как в фазе измерения. Это кажется мне противоречивым, поскольку размер предков зависит от размера их потомков.
Как WPF предоставляет это availableSize
значение в проходе измерения?