Silverlightの開発中にこんなエラーが出ました。
「Silverlight Runtime error 4008 レイアウト循環参照が発生しましたよん」
いつも思うんですがSilverLightのErrorはどこで発生しているか本当にわからんのですよ。
Runtimeエラーなのでやってはいけないことをやってしまったようです。
とりあえず原因探求の長い旅に出ました。
現象としてはScrollViewerのコンテンツにページを入れてScrollViewerにResizeイベントなどをはっつけてですね、ブラウザのResize時に動的なスケーラブルを実現していたのですがResizeを行っているときに例のエラーが起きてしまったのですよ。
色々と試してみたりして解決しましたよ。
原因はScrollViewerの中にScrollViewerを入れてたりしたんですね。
中に入っているScrollViewerに対してリサイズイベントが発生していたので、親のScrollViewerのWidthやHeightに対して干渉を起こし循環参照が発生していたようです。
ただし簡単にはこの現象が起こるわけではないんですよ。
コンテンツの中に入っているページに沢山のコントロールが配置されている時なのですが、コントロール数の区切りがさっぱりわからんです。
参考までに調べたサイトのURLを下記に記しときますよ。
http://silverlight.net/forums/t/17939.aspx
Beta2で結構出ていた内容のエラーらしいですね。ScrollViewerは困ったちゃんのようです。
コメント