WebView2控件:如下所示,通过事件内部的NavigateToString(...)调用成功加载了 HTML 字符串。Button_Click(...)
但是我需要在加载Window
和/或其加载后立即加载 HTML 字符串Grid
。MainWindow(){...}
但是构造函数内部或事件内部的以下代码会rootGrid_Loadded(...)
引发如下所示的错误:
问题:我们如何才能解决问题并在HTML string
加载Window
或加载后立即Grid
加载?还是有更好的解决方案/解决方法?
MainWindow.xaml:
<Window x:Class="WpfWebView2TEST.MainWindow"
.....
xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
mc:Ignorable="d"
Style="{StaticResource CustomWindowStyle}"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button x:Name="btnTest" Content=Test" Click="btnTest_Click"/>
<wv2:WebView2 Name="MyWebView" />
</Grid>
</Window>
注意:在以下构造函数中调用 MyLoadHTMLString() 或rootGrid_Loaded(...)
事件会引发如下所示的错误:
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyLoadHTMLString();
}
........
}
private void rootGrid_Loaded(object sender, RoutedEventArgs e)
{
MyLoadHTMLString();
}
public void MyLoadHTMLString()
{
string sHTML = "<!DOCTYPE html>" +
"<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">" +
"<head>" +
"<meta charset=\"utf-8\" />" +
"<title>Test Title</title>" +
"</head>" +
"<body>" +
"<p>Test paragraph</p>" +
"</body>" +
"</html>";
MyWebView.NavigateToString(sHTML);
}
注意:以下按钮单击事件successfully
将 HTML 字符串加载到WebView2
private void btnTest_Click(object sender, RoutedEventArgs e)
{
MyLoadHTMLString();
}
错误:
System.InvalidOperationException HResult=0x80131509 消息=尝试使用 WebView2 功能,这需要在初始化 CoreWebView2 之前使用其 CoreWebView2。首先调用 EnsureCoreWebView2Async 或设置 Source 属性。源=Microsoft.Web.WebView2.Wpf
更新:
此MSDN Doc的第二和第三段似乎为此类问题提供了一些解决方案。但我不确定如何实现它