确定导致LayoutUpdate / ArrangeOverride发生的原因?

时间:2009-03-26 15:35:27

标签: wpf

我有一个自定义面板,在调整大小时,它的LayoutUpdated事件和ArrangeOverride被调用两次。

因此,最初MeasureOverride和ArrangeOverride在打开客户端窗口时执行一次。然后,如果我最大化窗口,则每次调用两次。每次迭代之间的可用大小和最终大小分别没有差异,所以我不确定是什么启动了这个。

有没有办法确定失效的原因?

3 个答案:

答案 0 :(得分:6)

我认为它会被调用两次,因为高度和宽度会发生变化。我认为这两个属性都会影响Measure,因此每个属性都有一个布局传递。

答案 1 :(得分:3)

  

有没有办法确定失效的原因?

失效通常是由DependencyProperty的更改导致的,其中FrameworkPropertyMetadataOptions包含标志AffectsMeasure / AffectsOverride。

正如帕维尔已经说过的那样 - 宽度和高度的变化可能会导致失效。

无论如何,你不应该依赖这些失效的数量。

答案 2 :(得分:0)

我想说最简单的方法是为每个方法设置一个断点并观察调用堆栈。在调用方法之前,您将能够看到发生了什么。