我有一个自定义面板,在调整大小时,它的LayoutUpdated事件和ArrangeOverride被调用两次。
因此,最初MeasureOverride和ArrangeOverride在打开客户端窗口时执行一次。然后,如果我最大化窗口,则每次调用两次。每次迭代之间的可用大小和最终大小分别没有差异,所以我不确定是什么启动了这个。
有没有办法确定失效的原因?
答案 0 :(得分:6)
我认为它会被调用两次,因为高度和宽度会发生变化。我认为这两个属性都会影响Measure,因此每个属性都有一个布局传递。
答案 1 :(得分:3)
有没有办法确定失效的原因?
失效通常是由DependencyProperty的更改导致的,其中FrameworkPropertyMetadataOptions包含标志AffectsMeasure / AffectsOverride。
正如帕维尔已经说过的那样 - 宽度和高度的变化可能会导致失效。
无论如何,你不应该依赖这些失效的数量。
答案 2 :(得分:0)
我想说最简单的方法是为每个方法设置一个断点并观察调用堆栈。在调用方法之前,您将能够看到发生了什么。