ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

またしてもWebBrowserではまったお話

またかよ、しかも今度は理由がわからない。

WPFで開発やっていると、ある画面からWebBrowserを乗っけた画面に移動したのにWebBrowserだけ表示されないという事態に陥りました。原因が全く分からなくて本当に謎です。同じようなことをやっている他の画面は特に何もないのに、その画面だけうまく表示されません。どうなったかというと、まるでWebBrowserがなかったかのように消し飛んでいるのです。それだけならまだしも、画面を移動させたり、サイズを変更したり、ウィンドウを背面にしたりと、描画の更新が起きると表示されるのです。

こうしたら解決した

画面に対して水平方向にレイアウトコントロールとWebBrowserコントロール自身以外の何かがないとこうなるようです。DockPanelをひとつ用意して、1pxのBorderをWebBrowserコントロールの左側に突っ込んでやると表示されるようになりました。
難でこうなったのか本当に謎ですが、WebBrowserコントロールが他のWPFコントロールと毛色が違うことを考えると、多分その辺で理由があるかもしれません。どういうわけか描画する位置の再計算がされないとか。デバッガでプロパティを追っかけると「表示されている」ことにはなっていたので。