Я делаю приложение с контролем WebView. И я хочу, чтобы он прочитал локальный файл HTML. Но я не могу найти правильный способ сделать это возможным.
Сначала я просто пытался использовать метод Navigate и указывал путь к файлу в строке формата "file: /// ~" в качестве параметра, но он не работал.
https://docs.microsoft.com/ja-jp/windows/communitytoolkit/controls/wpf-winforms/webview-known-issues
На этой странице Microsoft сказано, что элемент управления WebView не распознает протокол "file: /// ~".
И это показывает 3 решения для управления WebView для чтения локальных файлов HTML.
- Используйте метод NavigateToLocal ().
- Используйте метод NavigateToLocalStreamUri ().
- Используйте метод NavigateToString ().
Я перепробовал их все, но у каждого из 3 есть некоторые проблемы, которые не позволяют ему работать.
- Метод NavigateToLocal требует ОТНОСИТЕЛЬНЫЙ путь к файлу (не абсолютный путь), относительно каталога исполняемого файла приложения. Таким образом, файлы в другом месте из каталога приложения не могут быть прочитаны этим методом.
- Метод NavigateToLocalStreamUri даже не реализован в соответствии со страницей! Я все равно однажды попробовал, но он вернул исключение и не работал.
- Метод 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-файл как ожидаемый результат
Но сейчас я не вижу пути.
Буду признателен за ваши советы или помощь.