You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF集成Blazor项目中如何正确配置WebView2相关参数

错误原因

  1. CS0649报错是因为你声明的_WebView字段从未被赋值,始终为null,编译阶段就会提示该字段永远是默认值。
  2. 运行时空引用异常是因为你在窗口构造函数中尝试访问WebView2配置,此时BlazorWebView控件还未完成加载,WebView2核心运行时也未初始化,相关属性自然是空值。

正确配置步骤

第一步:修改XAML代码,给BlazorWebView控件添加名称标识

<wv:BlazorWebView 
    x:Name="BlazorWebViewControl"
    HostPage="wwwroot/index.html" 
    Services="{StaticResource services}">
     <wv:BlazorWebView.RootComponents>
          <wv:RootComponent Selector="#app" ComponentType="{x:Type local:main}" />
     </wv:BlazorWebView.RootComponents>
</wv:BlazorWebView>

第二步:修改后台C#代码,等待WebView2初始化完成后再修改配置

using Microsoft.AspNetCore.Components.WebView.WebView2;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        var blazorCollection = new ServiceCollection();
        blazorCollection.AddBlazorWebView();
        Resources.Add("services", blazorCollection.BuildServiceProvider());
        InitializeComponent();
        // 订阅控件加载完成事件
        BlazorWebViewControl.Loaded += OnBlazorWebViewLoaded;
    }

    private async void OnBlazorWebViewLoaded(object sender, RoutedEventArgs e)
    {
        // 等待WebView2核心运行时初始化完成
        await BlazorWebViewControl.WebView.EnsureCoreWebView2Async();
        // 此时可以安全修改配置项
        BlazorWebViewControl.WebView.CoreWebView2.Settings.IsZoomControlEnabled = false;
        BlazorWebViewControl.WebView.CoreWebView2.Settings.AreDevToolsEnabled = false;
    }
}

如果需要使用ICoreWebView2Wrapper接口操作,初始化完成后通过BlazorWebViewControl.WebView就可以拿到对应实例,不需要单独声明字段存储。


内容的提问来源于stack exchange,提问作者Brian Brince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:39:02