我的问题更多是理论上的问题,而不是功能上的问题。因此,我正在寻找的答案可能会得到一些文档的支持。

我发现自己处于需要为wpf控件的 child 进行一些自定义尺寸/布置的情况?

  • 是否可以根据其他大小限制而不是作为参数接收的大小限制来测量子代。
  • 我正在尝试实现的一些伪代码:
    MeasureOverride(size)
     {
       foreach(child in children)
       {
         if(condition)
         {
           child.measure(size)
         }
         else
         {
           child.measure(customSize)
           if(...)
           {
             ...
           }
           ...
         }
       }
     }
    

  • 应该将所有逻辑存储在MeasureOverride内,还是仅在所有子代中以接收到的大小作为参数调用小节,然后在ArrangeOverride中执行逻辑?
    谢谢!

    最佳答案

    我认为您可以使用任何尺寸。 MeasureOverride方法的参数指定控件可用的大小。然后,该控件可以返回所需的任何DesiredSize,即使它大于AvailableSize。

    子控件将执行相同的操作。对 child 调用Measure的结果是该 child 的DesiredSize已设置。同样,这可以是任何东西,具体取决于 child 的测量逻辑。在MeasureOverride方法中,您可以使用逻辑来理解返回的DesiredSizes。

    如果您具有测量逻辑,则它绝对应存在于MeasureOverride方法(或辅助方法)中,而不应存在于ArrangeOverride中。 ArrangeOverride仅用于定位。

    我确定您已经检查过了,但是我仍然会发布链接。
    http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.measureoverride%28v=vs.110%29.aspx

    关于c# - WPF MeasureOverride和ArrangeOverride,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24527529/

    10-11 02:08