我正在使用WebView控件制作应用程序。我希望它读取本地html文件。但是我找不到正确的方法来实现它。
起初,我只是尝试使用Navigate方法,并以“ file:///〜”格式的字符串作为参数提供文件路径,但这没有用。
https://docs.microsoft.com/ja-jp/windows/communitytoolkit/controls/wpf-winforms/webview-known-issues
此Microsoft页面说WebView控件无法识别“ file:///〜”协议。 并显示了使WebView控件读取本地html文件的3种解决方案。
我尝试了所有方法,但是每3个方法都有一些问题使其无法正常工作。
我找到了一些使用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。
我想实现的非常简单。
但是我现在看不到这条路。 非常感谢您的建议或帮助。
答案 0 :(得分:1)
方法NavigateToLocalStreamUri
不起作用。请参阅https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/webview-known-issues。
您必须使用NavigateToLocal
,但是会看到一条警告,表明它已被弃用。但是,它仅适用于相对路径。您是否可以重组应用程序,以便可以使用相对路径?
NavigateToLocal
方法是我发现调用Microsoft.Toolkit.Forms.UI.Controls.Web WebView v6.0中的本地HTML文件的唯一方法。
答案 1 :(得分:0)
在Visual Studio 2019 Windows 10上,以下VB.NET代码可在我的PC上运行
Imports System.IO
Dim sFileName = Application.StartupPath & "/MyPage.html"
wv.NavigateToString(System.IO.File.ReadAllText(sFileName))
其中wv
是一个WebView对象。