gpt4 book ai didi

c# - 有人可以解释一下 Child.Measure(availableSize) 在 silverlight 中的作用吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:48 24 4
gpt4 key购买 nike

    protected override Size MeasureOverride(Size availableSize)
{

foreach (UIElement child in Children)
{
child.Measure(availableSize);
//you get the desired size after

}


}

因此,为简洁起见,我缩短了代码,但我无法理解为什么在某些示例中,他们将 availableSize 传递给 child ,然后在您获得 DesiredHeight、DesiredWidth 属性之后。 Measure 实际测量的是什么,为什么我什至必须传递任何东西?我已经阅读了 msdn 并做了示例,但仍然不理解,或者我可能想得太多了。

最佳答案

控件在 WPF 中作为树结构 (VisualTree) 进行布局。 “面板”是一种控件,可以在其中容纳许多子 UIElement,或者换句话说,面板用作 WPF/Silverlight 中的 LayoutSystem。框架给定的面板是 StackPanel、Grid、Canvas 等。如果您从 Panel 派生一个类并覆盖 MeasureOverride() 和 ArrangeOverride(),您将能够制作自定义面板。

好的,现在回答问题。在自定义面板或控件中,您可以调用 child.Measure(availableSize) 让所有下一级 child 知道“可用”大小是“ child ”现在得到的。并提供机会来决定那些子元素以适应它。就像我告诉我的 children ,这是我们得到的空间来决定你的尺寸。因此,一旦控件调用 Measure() ,它就会将其传递给后续子级,并且每个子级都会调用自己的 measure() 直到 VisualTree 结束,一旦该调用完成,您将能够看到所需的尺寸 child wanted in child .DesiredSize。现在您已获得所有子项的 desiredSizes,您可以计算控件的 desiredSize 并在 MeasureOverride() 函数结束时返回它

Layout 机制分两步工作,即 Measure 和 Arrange。一旦您用可用尺码测量了您的 child ,您就可以安排您的 child 了,因为在那一刻您将从 child 那里知道每个 child 需要什么尺码。DesiredSize

关于c# - 有人可以解释一下 Child.Measure(availableSize) 在 silverlight 中的作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2421810/

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