書くことないです。

ayamadoriが独り言を呟く日記。

WebBrowserコントロールがちらつくという話。

もいっこWebBrowserコントロールのネタがあったんだった。
NavigateToString()でhtmlソースを表示するとき、WebBrowserコントロールの背景色が白色固定でかっこ悪い。
なので、デバイスの背景色と一致するように、こんな感じでソースに手を入れてる。

// Get color resource and convert ARGB to RGB (#AARRGGBB -> #RRGGBB)
string backgroundColor = (App.Current.Resources["PhoneBackgroundBrush"] as SolidColorBrush).Color.ToString().Remove(1,2);
string textColor = (App.Current.Resources["PhoneForegroundBrush"] as SolidColorBrush).Color.ToString().Remove(1, 2);
string linkColor = (App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush).Color.ToString().Remove(1, 2);

// from http://stackoverflow.com/questions/9124166/how-to-make-webbrowser-control-with-black-background-in-windows-phone-7-1
string header = "<html><head><meta name=\"viewport\" content=\"width=device-width, user-scalable=0\"/><style type=\"text/css\">body{background-color: " + backgroundColor
 + "; color: " + textColor + "}a:link{color: " + linkColor + "}</style></head><body>";
string footer = "</body></html>";
source = header + source + footer;

これで一応望み通りに表示はできるのだけど、表示される直前に一瞬コントロール部分が真っ白になる現象が起こってる。
検索してみると他にも悩んでる人はいるようで、

Is it possible to change the background color of the WebBrowser control before loading content?
http://stackoverflow.com/questions/5602132/is-it-possible-to-change-the-background-color-of-the-webbrowser-control-before-l


Preventing white background before WebBrowser control's rerendering
http://social.msdn.microsoft.com/Forums/en-US/wpdevelop/thread/d17c9b92-28e6-4271-961f-c237ceb80f46/

参考にしながらNavigatingイベントやLoadCompletedイベントを拾ってOpacityやIsVisibleを変化させたりしてみたのだけど、解決しない。
ま、実用上そこまで困るものでもないんだけど、どうにも気持ち悪い。
最悪、ページ遷移アニメーションとかでごまかすしかないのかなー。