2009-03-26 32 views
5

リサイズ時にLayoutUpdatedイベントとArrangeOverrideが2回呼び出されるカスタムパネルがあります。LayoutUpdate/ArrangeOverrideの発生原因を特定しますか?

まず、MeasureOverrideとArrangeOverrideは、クライアントウィンドウを開いたときに一度そのことを行います。次に、ウィンドウを最大化すると、それぞれが2回呼び出されます。使用可能なサイズと最終サイズは、それぞれ反復ごとに異ならないので、私はこれを何が起きているのかよく分かりません。

無効化の原因を特定する方法はありますか?

+0

私は同様の質問をしている問題が発生しています:http://stackoverflow.com/questions/1577240/wpf-layoutupdated-event-firing-repeatedly –

答えて

6

高さと幅が変わるので2度呼ばれていると思います。私は、これらのプロパティの両方がMeasureに影響すると考えているため、それぞれのレイアウトパスがあります。

0

私は最も簡単な方法は、各メソッドのブレークポイントを設定し、コールスタックを観察していると思います。メソッドが呼び出される前に何が起こったのかを見ることができます。

+6

私はスタックトレースを取得するつもりはないコントロールを無効にするもの –

3

無効化の原因を特定する方法はありますか?

無効化は、通常、DependencyPropertyの変更によって引き起こされます。これは、FrameworkPropertyMetadataOptionsにフラグAffectsMeasure/AffectsOverrideがあります。

Pavelは既に述べています.WidthとHeightの両方の変更に対して無効化が発生する可能性があります。

とにかく、それらの無効化の数に頼るべきではありません。

関連する問題