Можно ли сделать элемент управления WebView для чтения локальных файлов HTML? - PullRequest
0 голосов
/ 04 апреля 2019

Я делаю приложение с контролем WebView. И я хочу, чтобы он прочитал локальный файл HTML. Но я не могу найти правильный способ сделать это возможным.

Сначала я просто пытался использовать метод Navigate и указывал путь к файлу в строке формата "file: /// ~" в качестве параметра, но он не работал.

https://docs.microsoft.com/ja-jp/windows/communitytoolkit/controls/wpf-winforms/webview-known-issues

На этой странице Microsoft сказано, что элемент управления WebView не распознает протокол "file: /// ~". И это показывает 3 решения для управления WebView для чтения локальных файлов HTML.

  1. Используйте метод NavigateToLocal ().
  2. Используйте метод NavigateToLocalStreamUri ().
  3. Используйте метод NavigateToString ().

Я перепробовал их все, но у каждого из 3 есть некоторые проблемы, которые не позволяют ему работать.

  1. Метод NavigateToLocal требует ОТНОСИТЕЛЬНЫЙ путь к файлу (не абсолютный путь), относительно каталога исполняемого файла приложения. Таким образом, файлы в другом месте из каталога приложения не могут быть прочитаны этим методом.
  2. Метод NavigateToLocalStreamUri даже не реализован в соответствии со страницей! Я все равно однажды попробовал, но он вернул исключение и не работал.
  3. Метод NavigateToString может отображать заданную строку содержимого html, но внешние файлы, такие как css, js, файлы изображений, включенные в html-коды, не могут быть загружены, поэтому он не обеспечивает полную функцию.

Я нашел пример использования метода NavigateToLocalStreamUri и попробовал сам.

(VB.NET)

wvwMain.NavigateToLocalStreamUri(uri, New StreamUriResolver())


Public Class StreamUriResolver : Implements IUriToStreamResolver
    Public Function UriToStream(uri As Uri) As Stream Implements IUriToStreamResolver.UriToStream
        Return New FileStream(uri.LocalPath, FileMode.Open)
    End Function
End Class

По этому коду метод NavigateToLocalStreamUri возвращает System.Resources.MissingManifestResourceException.

То, что я хочу реализовать, очень просто.

  • Использование элемента управления WebView
  • Чтение локального html-файла, расположенного в любом месте локального хранилища
  • И полностью отобразить HTML-файл как ожидаемый результат

Но сейчас я не вижу пути. Буду признателен за ваши советы или помощь.

...