【问题标题】:Determine what caused LayoutUpdate/ArrangeOverride to occur?确定导致 LayoutUpdate/ArrangeOverride 发生的原因?
【发布时间】:2010-10-15 17:42:28
【问题描述】:

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

因此,最初 MeasureOverride 和 ArrangeOverride 在打开客户端窗口时执行它们的操作。然后,如果我最大化窗口,每个窗口都会被调用两次。每次迭代之间的可用尺寸和最终尺寸分别没有不同,所以我不确定是什么引发了这个。

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

【问题讨论】:

标签: wpf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    失效通常是由 DependencyProperty 的更改引起的,其中 FrameworkPropertyMetadataOptions 具有标志 AffectsMeasure/AffectsOverride。

    正如 Pavel 已经说过的 - 宽度和高度的变化很可能会触发失效。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我不会获取使控件无效的堆栈跟踪。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多