WebViewの想定外のDOMContentLoadedイベント2017年01月04日 09:56

WebView再び。

DOMContentLoaded Event

サイトのHTMLの読込を完了すると、DOMContentLoadedイベントが発生する。上のイベント処理では、WebViewのScaleTransformを設定する処理を呼び出している。Web画面の表示は非同期で行われるので、画面調整は、イベントを受信して行うのが都合がよい。

Timer起動処理

こちらは、タイマ割り込みで呼び出す処理。WebViewの更新間隔を計算し、更新タイミングが到来すると、refreshを呼び出す処理にリストにつないで渡す。

この時、WebViewにBindでデータを供給するCollectionをチェックすると、DOMContentLoadedイベントが発生する。そのため、タイマ間隔ごとに、更新タイミングの到来の有無にかかわらず、全てのWebView画面がカチカチ明滅して煩わしい。

回避するため、Bindされていない履歴管理用の別のCollectionを設けて、こちらをチェックするように改める。想定外のイベント発生で、再び、WebViewに悩まされる。

UI個別のScaleTransformの設定2017年01月04日 10:14

画面に複数のWebViewを配置し、縮小率を別々に設定しようと、WebViewのRenderTransformプロパティを設定すると、全てのWebViewの縮小率が連動して変更される。

ScaleTransformを個別に生成

対処として、ScaleTransformを個別に生成して、WebViewのRenderTransformプロパティに設定する。初期状態では、WebViewのRenderTransformは、共有されている様子。

この動きは、WindowsのUIプログラムでは、常識なのかも。こういうのに、毎度、捕まる。