C# 如何在WPF中初始化WebView2?
我正在尝试在WPF应用程序中使用WebView2。我在和中也读到,我应该调用C# 如何在WPF中初始化WebView2?,c#,wpf,webview2,C#,Wpf,Webview2,我正在尝试在WPF应用程序中使用WebView2。我在和中也读到,我应该调用ensureCrewebView2Async()或设置Source属性以初始化WebView。如果我设置源代码,它会正确加载网页,但我不能这样做,因为我的内存中有html内容(不允许写入磁盘) 所以我尝试调用初始化方法: var webView = new WebView2(); webView.NavigationCompleted += Navigation_Completed; webView.Initializ
ensureCrewebView2Async()
或设置Source
属性以初始化WebView。如果我设置源代码
,它会正确加载网页,但我不能这样做,因为我的内存中有html内容(不允许写入磁盘)
所以我尝试调用初始化方法:
var webView = new WebView2();
webView.NavigationCompleted += Navigation_Completed;
webView.Initialized += new EventHandler((object sender, EventArgs e) => {
webView.NavigateToString(myHtml);
});
await webView.EnsureCoreWebView2Async(null);
此代码的运行被ensureCrewebView2Async()
方法阻止。我甚至可以等一分钟,但什么也没发生,只是在初始化中卡住了。没有异常,没有错误消息。
我在UI线程上运行此代码,但在另一个线程上调用此方法时也发生了同样的事情
有人经历过这种行为吗?有什么想法吗?要手动显示
webview 2
,必须将其添加到表单的控件集合中
在表单上放置WebView2时,设计器会自动执行此操作
简单地说:
Controls.Add(webView)
await webView.EnsureCoreWebView2Async(null);
现在您应该能够显示您的html了
更新:
您仍然可以在表单上删除WebView2
,如果愿意,只需不要设置Source
属性。
然后,您可以使用设计器分配事件处理程序,并在Initialized
事件中调用:
webView.NavigateToString(myHtml);
正如您现在所做的。如果您需要转到特定的URI,我必须执行以下调用
如前所述,不要在XAML中设置Source
属性
请注意,wv
是我的WevView2
的名称。重要的一点是,您仍然需要等待CoreWebView2加载。现在您可以将任何URI字符串替换为“https://www.microsoft.com"
当然,您应该调用EnsureCoreWebView2Async
函数。通过Controls.Add(webView)
private async void wv_Initialized(object sender, EventArgs e)
{
await wv.EnsureCoreWebView2Async(null);
wv.CoreWebView2.Navigate("https://www.microsoft.com");
}