在WPF中使用WebView2详解

WebView2,全称Microsoft Edge WebView2控件,是一个功能强大的UI组件,允许开发者在桌面应用中嵌入Web技术(HTML、CSS、JavaScript),实现所谓的混合开发。以下是在WPF(Windows Presentation Foundation)中使用WebView2的详细指南。

图片[1]_在WPF中使用WebView2详解_知途无界

一、WebView2的优势

  1. 助力程序开发和维护:相比桌面应用开发,Web技术更加灵活,开发者可以利用丰富的Web资源和工具进行快速开发。
  2. 无需频繁升级:引入Web技术后,桌面应用程序无需每次增加新功能都进行升级,用户体验更加顺畅。
  3. 扩展Web应用:WebView2补足了Web技术不能与宿主机交互、访问操作系统API的短板,使Web应用更加完善。

二、安装WebView2

  1. 安装WebView2运行时:WebView2的运行时需要单独安装,可以从Microsoft Edge WebView2下载页面获取安装包。安装完成后,WebView2控件才能正常工作。
  2. 安装WebView2 SDK:打开Visual Studio,并创建一个新的WPF应用程序项目。在解决方案资源管理器中,右键点击项目名称,选择“管理NuGet程序包…”,然后搜索并安装Microsoft.Web.WebView2.Wpf包。

三、在WPF中使用WebView2

添加WebView2控件:打开MainWindow.xaml文件,添加WebView2的命名空间声明:

    xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"

    然后,在Grid或其他容器中添加WebView2控件,并设置其Source属性以指定加载的网址:

      <Grid>  
          <wv2:WebView2 x:Name="webView" Source="https://www.example.com"/>  
      </Grid>

      初始化WebView2控件:在MainWindow.xaml.cs文件中,通过调用EnsureCoreWebView2Async方法来初始化WebView2控件。这个方法会确保CoreWebView2对象被正确创建和初始化:

        public MainWindow()  
        {  
            InitializeComponent();  
            InitializeAsync();  
        }  
        
        private async void InitializeAsync()  
        {  
            await webView.EnsureCoreWebView2Async(null);  
        }

        与Web内容进行交互:WebView2提供了丰富的API,允许开发者与Web内容进行交互。例如,可以执行JavaScript代码、处理导航事件、管理Cookie和本地存储等。

        • 执行JavaScript代码
          string result = await webView.CoreWebView2.ExecuteScriptAsync("document.title");

          处理导航事件

            webView.CoreWebView2.NavigationStarting += (sender, e) =>  
            {  
                // 处理导航开始事件  
            };

            管理Cookie

              var cookie = new CoreWebView2Cookie("name", "value", "example.com", "/");  
              webView.CoreWebView2.CookieManager.AddCookie(cookie);

              清除本地存储

                await webView.CoreWebView2.ExecuteScriptAsync("window.localStorage.clear();");

                高级配置:WebView2还支持一些高级配置,如自定义用户数据文件夹、选择Edge Runtime版本等。这些配置可以通过CoreWebView2EnvironmentCoreWebView2EnvironmentOptions类来实现。例如,选择固定版本的Edge Runtime:

                  var options = new CoreWebView2EnvironmentOptions  
                  {  
                      BrowserExecutableFolder = @"R:\WebView2\FixedVersion"  
                  };  
                  
                  var env = await CoreWebView2Environment.CreateAsync(null, null, options);  
                  await webView.EnsureCoreWebView2Async(env);

                  四、注意事项

                  1. 进程隔离:WPF程序和WebView2控件是进程隔离的,这意味着它们运行在不同的进程中,这有助于提高安全性和稳定性。
                  2. 调试模式:可以通过设置CoreWebView2EnvironmentOptionsAdditionalBrowserArguments属性来开启WebView2的调试模式,以便使用WebDriver等工具进行自动化测试。
                  3. 事件处理:WebView2提供了多种导航事件,如NavigationStartingSourceChangedContentLoading等,开发者可以根据需要订阅这些事件来处理不同的导航状态。

                  总之,WebView2为WPF应用程序提供了强大的Web内容嵌入能力,使得开发者可以利用丰富的Web技术和资源来构建更加灵活和丰富的桌面应用程序。

                  © 版权声明
                  THE END
                  喜欢就点个赞,支持一下吧!
                  点赞40 分享
                  评论 抢沙发
                  头像
                  欢迎您留下评论!
                  提交
                  头像

                  昵称

                  取消
                  昵称表情代码图片

                    暂无评论内容