gpt4 book ai didi

c# - 为什么 MeasureOverride 会收到 availableSize?

转载 作者:行者123 更新时间:2023-11-30 22:06:32 24 4
gpt4 key购买 nike

如果父控件询问其子控件“你想要多大?”,那么传递的 availableSize 参数有什么用?我已经通过 Reflector 查看了 StackPanel 的源代码,但我仍然无法理解。

如果child想要150x30,那么即使availableSize是100x20它还是报150x30不是吗?如果希望子项将自己限制在 availableSize,那么也可以根据从对子项调用 MeasureOverride 返回的大小来完成 - 没有必要传递该参数。

有什么我没有考虑到的吗?

最佳答案

If the child wants to be 150x30, then it still reports 150x30 even if availableSize is 100x20, doesn't it?

这取决于控件,但一般答案是否定的。无论如何,重点是让它有机会适应容器,但这不是必须的。

想想 Grid 和 StackPanel 之间的区别。 Grid 通常会根据可用大小精确调整自身大小。相比之下,StackPanel 将仅在一个方向上无限调整自身大小(取决于其方向),而不管可用大小如何。在另一个方向上,它只会延伸到它的 child 所需的空间,除非它的“Horizo​​ntalAlignment”/“VerticalAlignment”设置为“Stretch”,在这种情况下它会拉伸(stretch)到可用的尺寸方向。

ViewBox是一个更复杂的例子,很好地利用了“availableSize”。它通常根据可用空间调整自身大小,并根据“Stretch”和“StretchDirection”的值缩放/拉伸(stretch)其子项。

关于c# - 为什么 MeasureOverride 会收到 availableSize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23574264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com