繁体   English   中英

视图模型中的 WPF WebView2 初始化永远不会返回

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM