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を変化させたりしてみたのだけど、解決しない。
ま、実用上そこまで困るものでもないんだけど、どうにも気持ち悪い。
最悪、ページ遷移アニメーションとかでごまかすしかないのかなー。