2011-01-16 4 views
1

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

Я проверил документацию WPF и выяснил, что их метод Measure принимает ограничение размера в качестве параметра: Size Measure(Size availableSize). Это меня озадачивает. По моему пониманию этого, WPF сначала измеряет от листьев до корня, а затем от корня до листьев. Однако в этом случае требуемый размер от предков необходим во время фазы измерения. Это кажется мне противоречивым, поскольку размер предков зависит от размера их потомков.

Каким образом WPF предоставляет это значение availableSize в проходе измерения?

ответ

2

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

+0

Это имеет смысл :) – Trillian

 Смежные вопросы

  • Нет связанных вопросов^_^