.NET MAUI Blazor如何实现非英语语言拼写错误下划线提示
.NET MAUI Blazor 非英语拼写检查下划线不显示解决方案
问题根因
MAUI Blazor在Windows平台依托WebView2渲染内容,和原生Edge浏览器、WinUI 3原生文本控件的默认配置不同:WebView2默认仅加载当前系统UI对应语言的拼写检查词典,不会自动识别你系统中已安装的其他语种拼写检查包,因此西语、俄语的拼写错误不会触发下划线标识。
Windows平台修复步骤
- 安装最新稳定版
Microsoft.Web.WebView2NuGet包到你的MAUI项目Windows目标平台,确保多语言拼写接口可用。 - 在
MauiProgram.cs中添加WebView2初始化配置,手动指定需要加载的拼写检查语言:
using Microsoft.AspNetCore.Components.WebView; using Microsoft.Web.WebView2.Core; public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); // 配置BlazorWebView的拼写检查规则 builder.ConfigureMauiHandlers(handlers => { handlers.AddHandler<BlazorWebView, BlazorWebViewHandler>(webViewHandler => { webViewHandler.PlatformView.CoreWebView2Initialized += (sender, _) => { var coreWebView = ((WebView2)sender).CoreWebView2; // 全局开启拼写检查 coreWebView.Settings.IsSpellCheckEnabled = true; // 填入你系统中已安装拼写包的语种BCP-47标识,示例为英语、西班牙语(西班牙)、俄语 coreWebView.Settings.SpellcheckLanguages = new List<string> { "en-US", "es-ES", "ru-RU" }; }; }); }); return builder.Build(); }
- 注意:不要直接复制示例中的语言代码,到系统「时间和语言-语言和区域」设置页,确认你安装的西语、俄语对应的具体BCP-47标签(比如西语如果是墨西哥版本对应
es-MX),替换到上述代码的语言列表中,标识不匹配会导致对应词典加载失败。 - 检查编辑器组件配置:如果你使用第三方Blazor编辑器组件,确认组件的输入/可编辑区域没有被强制加
spellcheck="false"属性,同时不要给编辑区加lang属性写死单一语种,避免WebView2无法自动识别输入文本的语种。 - 版本校验:如果配置后仍不生效,检查本地WebView2运行时版本,版本低于102.0.1245.0时不支持多语言拼写检查接口,升级MAUI到最新稳定版即可自动更新绑定的WebView2版本。
其他平台适配提示
- MacCatalyst/iOS:平台WKWebView默认开启拼写检查,只需在
Info.plist中添加所有需要支持的语种声明,即可加载对应系统拼写词典。 - Android:在
AndroidManifest.xml中给应用开启android:spellCheckEnabled="true"权限,拼写检查能力由系统输入法提供,需要确保输入法本身开启了对应语种的拼写检查开关。
配置完成后重新部署应用,在编辑器中输入对应语种的错误拼写单词,即可正常显示红色错误下划线,和Edge、原生WinUI 3应用的表现完全一致。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

