私はUWPプロジェクトで作業していますが、不透明度= 0.01fのWebViewをロードし、WebView_LoadCompletedが呼び出されたときに不透明度を1.0fに設定します。それまではプレビュー画像で表示されます。しかし、私がそれを見せているとき、20の場合1のように白く点滅し、同じWebViewのコンテンツをテストしています。WebViewレンダリングのちらつきが
Grid grid = new Grid();
//set previewImage as preview of grid content
Image backgroundImage = new Image();
backgroundImage.Source = new BitmapImage(new Uri(@"ms-appdata:///local/" + "some path"));
grid.Children.Add(backgroundImage);
grid.SetValue(Grid.RowProperty, slide.Pos.Y);
grid.SetValue(Grid.ColumnProperty, slide.Pos.X);
MainGrid.Children.Add(grid);
WebView webView = new WebView();
webView.NavigationStarting += WebView_NavigationStarting;
webView.LoadCompleted += WebView_LoadCompleted;
webView.ScriptNotify += WebView_ScriptNotify;
webView.Opacity = 0.01f;
Uri navigationUri = "some local file Uri");
webView.NavigateToLocalStreamUri(navigationUri, myResolver); // myResolver checks if source is allowed to load
webView.Width = 1024;
webView.Height = 768;
Viewbox viewBox = new Viewbox();
viewBox.Stretch = Stretch.Uniform;
viewBox.Child = webView;
grid.Children.Add(viewBox);
そして、私のWebView_LoadCompletedは、次のようになります: 私のコードは次のようになります
private void WebView_LoadCompleted(object sender, NavigationEventArgs e)
{
WebView webView = (WebView)sender;
webView.Opacity = 1.0f;
}
私はそれが表示されているので、WebViewのが唯一の低opicityで(すぐにそのlaodedコンテンツをレンダリングすることを期待していました)をViewBoxに入れ、ほとんどの場合、ちらつきはしませんが、それでも表示されます。
WebView_LoadCompletedの後にコールを受けようとしましたが、WebViewとViewBoxのx_LayoutUpdated、x_SizeChangedなどの呼び出しを試しましたが、WebView_LoadCompletedは最後にコールされたブレークポイントの関数です。
WebView.DefaultBackgroundColorを透明に設定しても機能しませんでしたが、まだ白くちらつきます。 WebViewをイメージの下に配置し、レイアウト時間の遅延の後で前面に表示されませんでした。
ありがとうございました!それは有り難いです!
を 'ViewBox'は、あなたの' WebView'のコンテナタイプを変更してみてください。 –
こんにちは、私はそれを見て、しかし、あなたの提案を検証するものを見ることができませんでしたが、私はこの質問を見つけました: http://stackoverflow.com/questions/34340134/how-to-know-when-a-frameworkelement -has-been-totally-rendered WPF関数 "ContentRendered"のUWPで同様のコールバックを探している人がいました。これは、ライフサイクルの最終呼び出しがプレゼンテーション/レンダリング。 –