我尝试在WPF应用程序中使用WebView2。我在docs和other posts中读到,我应该调用EnsureCoreWebView2Async()
或设置Source
属性以初始化WebView。如果我设置Source
,它将正确加载网页,但我不能这样做。因为我在内存中有html内容(并且不允许写入磁盘)。
所以我试着调用初始化方法:
var webView = new WebView2();
webView.NavigationCompleted += Navigation_Completed;
webView.Initialized += new EventHandler((object sender, EventArgs e) => {
webView.NavigateToString(myHtml);
});
await webView.EnsureCoreWebView2Async(null);
这段代码的运行被EnsureCoreWebView2Async()
方法阻止了。我甚至可以等一分钟,但是什么也没发生,它只是卡在初始化中。没有异常,没有错误消息。我在UI线程上运行这段代码,但是当我在另一个线程上调用这个方法时,同样的事情发生了。
有人经历过这种行为吗?有什么想法吗?
3条答案
按热度按时间myzjeezk1#
若要手动显示
WebView2
,必须将其添加到窗体的Controls
集合中。当您将WebView2放到表单上时,设计工具会自动执行此动作。
干脆叫:
现在应该可以显示html了。
更新:
如果愿意,您仍然可以将
WebView2
放到窗体上,只是不要设置Source
属性。然后您可以使用设计器来分配事件处理程序,并在
Initialized
事件中调用:就像你现在一样。
nnsrf1az2#
如果需要转到特定的URI,我必须执行以下调用。
如前所述,请勿在XAML中设定
Source
属性。请注意,
wv
是WevView2
的Name
。重要的是,您仍然需要等待CoreWebView2加载。现在,您可以将任何URI字符串替换为“https://www.microsoft.com“。k5ifujac3#
初始化webview2的适当位置是WPF OnContentRendered()示例: