WebView.NavigateToLocalStreamUri(Uri, IUriToStreamResolver) Méthode

Définition

Charge le contenu web local à l’URI spécifié à l’aide d’un IUriToStreamResolver.

C#
public void NavigateToLocalStreamUri(System.Uri source, IUriToStreamResolver streamResolver);

Paramètres

source
Uri

URI identifiant le contenu HTML local à charger.

streamResolver
IUriToStreamResolver

Programme de résolution qui convertit l’URI en flux à charger.

Configuration requise pour Windows

Exemples

L’exemple de code suivant montre comment créer et utiliser un programme de résolution qui servira un fichier à partir du package d’application. Pour obtenir un exemple complet, consultez l’exemple de contrôle Xaml WebView.

C#
public sealed partial class TestPage : Page
{
    // ... other code ...

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        // The 'Host' part of the URI for the ms-local-stream protocol needs to be a combination of the package name
        // and an application-defined key, which identifies the specific resolver, in this case 'MyTag'.

        Uri url = webView4.BuildLocalStreamUri("MyTag","/Minesweeper/default.html");
        StreamUriWinRTResolver myResolver = new StreamUriWinRTResolver();

        // Pass the resolver object to the navigate call.
        webView4.NavigateToLocalStreamUri(url, myResolver);
    }
}

public sealed class StreamUriWinRTResolver : IUriToStreamResolver
{
    public IAsyncOperation<IInputStream> UriToStreamAsync(Uri uri)
    {
        if (uri == null)
        {
            throw new Exception();
        }
        string path = uri.AbsolutePath;

        // Because of the signature of the this method, it can't use await, so we 
        // call into a separate helper method that can use the C# await pattern.
        return GetContent(path).AsAsyncOperation();
    }

    private async Task<IInputStream> GetContent(string path)
    {
        // We use a package folder as the source, but the same principle should apply
        // when supplying content from other locations
        try
        {
            Uri localUri= new Uri("ms-appx:///html" + path);
            StorageFile f = await StorageFile.GetFileFromApplicationUriAsync(localUri);
            IRandomAccessStream stream = await f.OpenAsync(FileAccessMode.Read);
            return stream;
        }
        catch (Exception) { throw new Exception("Invalid path"); }
    }
}

Remarques

Utilisez cette méthode pour charger du contenu local que la méthode NavigateToString ne gère pas. NavigateToString offre un moyen simple d’accéder à du contenu HTML statique, y compris du contenu avec des références à des ressources telles que CSS, des scripts, des images et des polices. Toutefois, NavigateToString ne permet pas de générer ces ressources par programmation.

Pour utiliser la méthode NavigateToLocalStreamUri, vous devez passer une implémentation IUriToStreamResolver qui traduit un modèle d’URI en flux de contenu. Vous pouvez le faire pour fournir le contenu de toutes les ressources utilisées par une page web ou une série de pages. Par exemple, vous pouvez utiliser cette méthode pour afficher le contenu enregistré sur le système de fichiers local sous forme de fichiers chiffrés ou dans des packages cab. Lorsque le contenu est demandé, vous pouvez utiliser une implémentation IUriToStreamResolver pour le déchiffrer à la volée.

L’interface IUriToStreamResolver a une méthode, UriToStreamAsync, qui prend l’URI et retourne le flux. L’URI se présente sous la forme « ms-local-stream://appname_KEY/folder/file » où KEY identifie le programme de résolution. Utilisez BuildLocalStreamUri pour créer un URI au format approprié qui référence le contenu local à charger.

Notes

Votre implémentation IUriToStreamResolver doit être agile pour éviter un blocage qui peut se produire lorsque le thread d’interface utilisateur attend que IUriToStreamResolver termine son travail avant de continuer. Pour plus d’informations, consultez Threading et marshaling

Si l’application possède cette enterpriseCloudSSO fonctionnalité, les pages web hébergées dans le contrôle WebView peuvent utiliser l’authentification unique avec les ressources Azure Active Directory (AAD).

S’applique à

Produit Versions
WinRT Build 10240, Build 10586, Build 14383, Build 15063, Build 16299, Build 17134, Build 17763, Build 18362, Build 19041, Build 20348, Build 22000, Build 22621, Build 26100

Voir aussi