【发布时间】:2019-10-21 17:00:59
【问题描述】:
我需要显示一个本地 HTML 文件,其中包含通过外部或内部样式表包含的图像和字体。我想将 .NET Framework 4.8 引入的新 webView 控件用于 WinForms。
我尝试了几种不同的方法。使用字体和图像托管 HTTP 服务器确实有效。遗憾的是,在推出该程序时,这不是一个解决方案,因为它对每台个人电脑的配置太多。
将图像和字体编码为 base64 字符串并将它们用作源代码确实有效。但我想使用 NavigateToLocalStreamUri 方法来获得一个易于阅读且不需要太多开销即可使其工作的解决方案。
NuGet 包 Microsoft.Toolkit.Forms.UI.Controls.WebView 安装在其最新的稳定版本 5.1.1 中
下面是我当前用来尝试运行 NavigateToLocalStreamUri 的代码。
var uri = new Uri(someLocalPath);
webView1.NavigateToLocalStreamUri(uri, new CustomUriToStreamResolver());
private class CustomUriToStreamResolver : IUriToStreamResolver
{
public Stream UriToStream(Uri uri)
{
var stream = new FileStream(uri.AbsolutePath, FileMode.Open);
return stream;
}
}
预期的行为是打开位于 someLocalPath 的 HTML 文件
相反,它会引发以下异常,我不完全理解。
Could not find any resources appropriate for the specified culture or the
neutral culture. Make sure \"Microsoft.Toolkit.Win32.UI.Controls.DesignerUI.resources\"
was correctly embedded or linked into assembly
\"Microsoft.Toolkit.Forms.UI.Controls.WebView\" at compile time, or that all
the satellite assemblies required are loadable and fully signed.
问题是我的CustomUriToStreamResolver 还是我不知道的潜在问题?
如果您知道在 WinForm 中使用 webView 控件打开 someLocalPath HTML 文件的任何其他方法,请告诉我。
【问题讨论】:
-
我没有答案,我是说我也在尝试实现 webview 5.1.1。我正在使用它来导航 Intranet 站点。但是,如果不启用 IsPrivateNetworkClientServerCapabilityEnabled 标志,这是不可能的。启用此功能后,我会遇到与您相同的问题。确保“Microsoft.Toolkit.Win32.UI.Controls.DesignerUI.resources”被正确嵌入或链接到程序集中......有什么消息吗?
-
此控件由 Edge 团队拥有/运营。你最好的选择是去你获得控制权的仓库并询问他们。文档在这里:https://docs.microsoft.com/en-us/dotnet/api/microsoft.toolkit.forms.ui.controls.webview?view=win-comm-toolkit-dotnet-stable Github repo 在这里:https://github.com/windows-toolkit/Microsoft.Toolkit.Win32
-
我也在查看同样的问题,并在此处打开了功能请求:github.com/windows-toolkit/Microsoft.Toolkit.Win32/issues/176