我实施了自定义控件 当我为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
答案 0 :(得分:0)