Развернуть Свернуть

WebView.NavigateToLocalStreamUri Method

Загружает локальное веб-содержимое по указанному URI, используя IUriToStreamResolver.

Синтаксис


public void NavigateToLocalStreamUri(
  Uri source, 
  IUriToStreamResolver streamResolver
)

Параметры

source

Тип: System.Uri [.NET] | Windows::Foundation::Uri [C++]

Универсальный код ресурса (URI), определяющий локальное HTML-содержимое для загрузки.

streamResolver

Тип: IUriToStreamResolver

Распознаватель, который выполняет преобразование универсального кода ресурса (URI) в поток для загрузки.

Примечания

Используйте этот метод для загрузки локального содержимого, не обрабатываемого методом NavigateToString. NavigateToString предоставляет простой способ навигации по статическому содержимому HTML, включая содержимое со ссылками на ресурсы, например CSS, скрипты, изображения и шрифты. Однако NavigateToString не предусматривает возможности создавать эти ресурсы программными средствами.

Чтобы использовать метод NavigateToLocalStreamUri, необходимо передать реализацию IUriToStreamResolver, преобразующую шаблон URI, в поток содержимого. Это можно сделать, чтобы предоставить содержимое для всех ресурсов, используемых веб-страницей или рядом страниц. Например, этот метод можно использовать для отображения содержимого, сохраненного в локальной файловой системе в виде зашифрованных файлов или в cab-пакетах. Если запрашивается содержимое, можно использовать реализацию IUriToStreamResolver для его расшифровки на лету.

Интерфейс IUriToStreamResolver имеет один метод UriToStreamAsync, который принимает URI и возвращает поток. Универсальный код ресурса (URI) в формате ms-local-stream://appname_KEY/folder/file, где KEY определяет распознаватель. Используйте метод BuildLocalStreamUri для создания URI в надлежащем формате, который обеспечивает ссылку на локальное содержимое для загрузки.

Примечание  Реализация IUriToStreamResolver должна быть достаточно гибкой, чтобы не допустить взаимоблокировки, которая происходит, когда поток ИП ожидает завершения работы IUriToStreamResolver, прежде чем продолжить. Дополнительные сведения см. в разделе Работа с потоками и маршалинг.

Примеры

В следующем примере кода показано, как создать и использовать сопоставитель, который будет обслуживать файл из пакета приложения. Полный пример см. в примере XAML WebView control sample.



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


Требования

Минимальный поддерживаемый клиент

Windows 8.1

Минимальный поддерживаемый сервер

Windows Server 2012 R2

Пространство имен

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

Metadata

Windows.winmd

См. также

WebView
IUriToStreamResolver
BuildLocalStreamUri
Пример элемента управления WebView для языка XAML

 

 

Показ:
© 2015 Microsoft