c # - WebView-gengivelse flimrer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg arbejder på et UWP-projekt, og jeg vil indlæse en WebView med opacity=0.01f, og kun sætte opacitet til 1.0f, når WebView\_LoadCompleted hedder. Indtil da er det præsenteret af et previewbillede. Men når jeg viser det , det flimrer hvidt som 1 på 20 tilfælde, og jeg tester det samme WebView indhold.
Min kode ser sådan ud:


            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);


Og min WebView\_LoadCompleted ser sådan ud:


    private void WebView\_LoadCompleted(object sender, NavigationEventArgs e)
    {
        WebView webView = (WebView)sender;
        webView.Opacity = 1.0f;
    }


Jeg havde forventet, at WebView kun vil gengive sit lakeret indhold med det samme, fordi det er synligt (med lav opicitet) i ViewBox, og de fleste gange blinker det ikke, men det vises stadig.


Forsøg på at ringe efter WebView\_LoadCompleted fungerede endnu, jeg forsøgte nogle opkald som x\_LayoutUpdated, x\_SizeChanged til WebView og ViewBox, men WebView\_LoadCompleted er den sidst kaldte funktion, der løber ind i et breakpoint.


Indstilling af WebView.DefaultBackgroundColor til gennemsigtighed virker ikke, det blinker stadig hvidt.
Placering af WebView under billedet og at få det til fronten efter en forsinkelse for layouttid virkede ikke.


Tak for din hjælp! Jeg sætter pris på det!

Bedste reference


Det ser ud til, at der ikke er nogen ordentlig måde at validere, at webvisningen er færdig med alle mulige indlæsnings- og gengivelsesprocesser for webvisningen.
Men du kan bruge dette svar på et andet spørgsmål til andre UIElements:


Svar