Método NavigateToLocalStreamUri

WebView.NavigateToLocalStreamUri Method

Carga contenido web local en el URI especificado mediante IUriToStreamResolver.

Sintaxis


public void NavigateToLocalStreamUri(
  Uri source, 
  IUriToStreamResolver streamResolver
)

Parámetros

source

Tipo: System.Uri [.NET] | Windows::Foundation::Uri [C++]

Un URI que identifica el contenido HTML local para cargar.

streamResolver

Tipo: IUriToStreamResolver

Una resolución que convierte el URI en una secuencia para cargar.

Comentarios

Use este método para cargar el contenido local que no controlará el método NavigateToString. NavigateToString proporciona una manera sencilla de navegar hasta el contenido HTML estático, incluido contenido con referencias a recursos como CSS, scripts, imágenes y fuentes. Sin embargo, NavigateToString no proporciona una manera de generar estos recursos mediante programación.

Para utilizar el método NavigateToLocalStreamUri, debe pasarle una implementación de IUriToStreamResolver que traduzca un patrón de URI a una secuencia de contenido. Puede hacerlo para proporcionar el contenido para todos los recursos utilizados por una página web o una serie de páginas. Por ejemplo, puede utilizar este método para mostrar el contenido guardado en el sistema de archivos local como archivos cifrados o en paquetes CAB. Cuando se solicita el contenido, puede utilizar una implementación de IUriToStreamResolver para descifrarlo sobre la marcha.

La interfaz IUriToStreamResolver tiene un método, UriToStreamAsync que toma el URI y devuelve la secuencia. El URI tiene el formato “ms-local-stream://appname_KEY/folder/file” donde KEY identifica el software de resolución. Use BuildLocalStreamUri para crear el URI con el formato correcto que haga referencia al contenido local que se va a cargar.

Nota  Su implementación de IUriToStreamResolver debe ser ágil evitar el interbloqueo que puede aparecer cuando el subproceso de la interfaz de usuario espera a que IUriToStreamResolver finalice su trabajo antes de continuar. Para obtener más información, vea Subprocesos y cálculo de referencias.

Ejemplos

El ejemplo de código siguiente muestra cómo crear y usar una resolución que suministrará un archivo del paquete de aplicaciones. Para ver un ejemplo completo, vea el ejemplo de control WebView de XAML.



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 seperate 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"); }
    }
}


Requisitos

Cliente mínimo admitido

Windows 8.1

Servidor mínimo admitido

Windows Server 2012 R2

Espacio de nombres

Windows.UI.Xaml.Controls
Windows::UI::Xaml::Controls [C++]

Metadatos

Windows.winmd

Vea también

WebView
IUriToStreamResolver
BuildLocalStreamUri
Ejemplo de control WebView de XAML

 

 

Mostrar:
© 2017 Microsoft