1

我实现了一个受 WPF 的 Measure and Arrange 游戏布局系统启发的 GUI 系统。虽然它与 DockPanels 和 StackPanels 配合得很好,但我最近需要使用 WrapPanels。我发现,在目前的状态下,我的 GUI 系统不支持换行,因为我需要知道基于祖先的最大可用大小,而我的测量目前是在没有这些信息的情况下完成的。

我检查了 WPF 文档,发现他们的Measure方法将大小约束作为参数:Size Measure(Size availableSize). 这让我很困惑。根据我的理解,WPF首先是从叶子到根的测量,然后是从根到叶子的排列。但是,在这种情况下,在测量阶段需要来自祖先的可用大小。这对我来说似乎是矛盾的,因为祖先的大小取决于他们后代的大小。

WPF 如何availableSize在测量过程中提供此值?

4

1 回答 1

2

我认为您对重新测量的理解是不正确的-它是从根到叶而不是从叶到根发生的。实际上,父控件有责任Measure()在其自己的度量传递期间调用其子控件。因此,父母可以计算出有多少空间可供其孩子使用,并且可以在测量时将其传递进去。

于 2011-01-16T18:35:30.567 回答