[英]WPF WebView2 Initialization in viewmodel never returns
在我的 wpf 应用程序中,我尝试显示用于登录的 webView2,即使当我导航到视图并开始初始化时也没有任何反应。 我尝试了许多在互联网上找到的选项和解决方案,它们对其他人有用,但没有任何帮助。
编码:
private WebView2 m_webView21;
public WebView2 WebView21 { get => m_webView21; set => SetProperty(ref m_webView21, value); }
protected async Task<WebView2> CreateBrowserAndLoadUrlAsync(string url)
{
webView21 = new WebView2();
webView21.CoreWebView2InitializationCompleted += WebView21_CoreWebView2InitializationCompleted;
Debug.WriteLine("InitializeAsync");
await webView21.EnsureCoreWebView2Async();
Debug.WriteLine("WebView2 Runtime version: " + webView21.CoreWebView2.Environment.BrowserVersionString);
SetBrowserHostVisibility(Visibility.Visible);
if (webView21 != null && webView21.CoreWebView2 != null)
{
webView21.CoreWebView2.Navigate(url);
}
return webView21;
}
private void WebView21_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
{
webView21.Loaded += Browser_FrameLoadEnd;
webView21.Initialized += Browser_InitializedChanged;
}
--Xaml Code--
<Grid Background="Transparent">
<wv2:WebView2 Visibility="Visible" Source="{Binding WebView21.Source.AbsoluteUri, Mode=OneWay}"/>
</Grid>
这是我从 OnNavigatedTo() 在我的视图模型中调用的第一件事。 一切正常,因为它应该解除涉及 EnsureCoreWebViewAsync() - 从这个函数它永远不会返回 - 只是没有任何反应。
当我不初始化 webview2 并将源设置为 uri 时,一切正常。 但是没有任何事件或任何东西被触发(例如 NavigationCompleted、SourceChanged 等),我需要这些事件。
我安装了正确的运行时我当然也安装了 WebView2 插件。 还尝试了不同的环境,没有任何帮助。
所以实际的问题是,甚至可以从 Viewmodel 初始化 WebView2 吗?
我找到了解决方案。 我不得不在我的 xaml 中使用一个占位符,它后来在我的 Viewmodel 中初始化为 webView2。
只需用这个更改问题中的xaml代码,它应该可以正常工作
<ContentControl Content="{Binding WebView21, Mode=OneWay}" />
感谢所有有用的评论:))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.