WebView.NavigateToLocalStreamUri(Uri, IUriToStreamResolver) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Charge le contenu web local à l’URI spécifié à l’aide d’un IUriToStreamResolver.
public:
virtual void NavigateToLocalStreamUri(Uri ^ source, IUriToStreamResolver ^ streamResolver) = NavigateToLocalStreamUri;
void NavigateToLocalStreamUri(Uri const& source, IUriToStreamResolver const& streamResolver);
public void NavigateToLocalStreamUri(System.Uri source, IUriToStreamResolver streamResolver);
function navigateToLocalStreamUri(source, streamResolver)
Public Sub NavigateToLocalStreamUri (source As Uri, streamResolver As IUriToStreamResolver)
Paramètres
- streamResolver
- IUriToStreamResolver
Programme de résolution qui convertit l’URI en flux à charger.
Configuration requise pour Windows
Fonctionnalités de l’application |
enterpriseCloudSSO
|
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.
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).