在调用InvalidateMeasure时是否有任何情况,它不会触发MeasureOverride方法?

时间:2016-11-17 07:28:24

标签: wpf

我实施了自定义控件 当我为UIElement调用InvalidateMeasure时;它的MeasureOverride未被触发 此外,在此状态下,当宽度或高度改变时,不会触发MeasureOverride 几乎在所有情况下都会触发MeasureOverride。但是,有一个特定的情况是它没有被触发。

我不可能在一个简单的演示中复制相同的问题,我也无法共享自定义控件。

当前的解决方法是使UIElement的一个嵌套父元素无效(仅一次),之后触发度量覆盖。但是稍后在使用该应用程序时会再次出现同样的问题。

那么,这是WPF框架中的一个错误吗? 是否有任何方案可以在调用InvalidateMeasure时停止调用MesureOverride的WPF框架?

一些观察:
在以下视觉结构中 如前所述,如果我使节点'无效。它不起作用。
解决方法:如果我使CustomScrollViewer无效(仅一次),它就可以了 线索:如果我删除注释我无法看到这个问题。

视觉结构将是这样的:

Control (a custom control)
-Grid
--CustomScrollViewer (a custom control)
---Border
----Grid
-----ContentPresenter
------Canvas
-------DiagramPage (a custom panel contains about 200 elements)
--------Node (a custom control)
---------Grid
----------AnnotationPanel (a custom panel contains about 2-3 elements)
-----------Annotation

1 个答案:

答案 0 :(得分:0)

正如克莱门斯所说,看起来这不是问我问题的最佳场所。我将发布到Microsoft Connect。