2016-11-17 17 views
0

カスタムコントロールが実装されています。
UIElementにInvalidateMeasureを呼び出すと、そのMeasureOverrideはトリガされません。
また、この状態で、幅または高さが変更された場合、MeasureOverrideはトリガされません。
ほとんどの場合、MeasureOverrideがトリガーされます。しかし、トリガーされていない特定のシナリオがあります。InvalidateMeasureを呼び出しても、MeasureOverrideメソッドがトリガされません。

簡単なデモで同じ問題を複製することはできません。カスタムコントロールも共有できません。

現在の回避策は、UIElementのネストされた親要素の1つを無効にすることです(1回のみ)。その後、メジャーオーバーライドがトリガされます。しかし、後でアプリケーションを使用するときに同じ問題が再度発生します。

これは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

"これはWPFフレームワークのバグですか?"確かにそうではありません。それだけでなく、[完全で検証可能な例](http://stackoverflow.com/help/mcve)がなければ、あなたの質問に答えることは不可能です。 'InvalidateMeasure'の代わりに' UpdateLayout'を試しましたか? – Clemens

+0

@Clemens私はUpdateLayoutを試しましたが、Measure/Arrangeオーバーライドメソッドを呼び出していません。 – Jegan

答えて

0

クレメンスが言ったように、これは私の質問をするのに最適な場所ではないように見えます。これをMicrosoft Connectに投稿します。

関連する問題