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

.NET不借助第三方库实现拼写检查的方案咨询

实现结论

完全可以实现,不需要依赖可见的WPF输入控件,仅通过调用PresentationFramework.dll的相关API即可完成需求。

前置依赖

你的类库项目需要先引用以下WPF核心程序集:

  • PresentationFramework.dll
  • PresentationCore.dll
  • WindowsBase.dll
核心实现逻辑

不需要创建显示在界面上的TextBox控件,只需要实例化一个内存级别的TextBox对象,开启拼写检查配置后,直接调用其内置的拼写校验API即可。

示例代码

using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Markup;

public static class SpellCheckUtility
{
    // 静态复用TextBox实例,避免重复创建的性能开销
    private static readonly TextBox _checker = new TextBox
    {
        SpellCheck = { IsEnabled = true },
        // 可按需指定校验语言,比如英文为en-US,中文为zh-CN
        Language = XmlLanguage.GetLanguage("en-US")
    };

    /// <summary>
    /// 校验单词拼写
    /// </summary>
    /// <param name="inputWord">待校验的单词</param>
    /// <returns>拼写是否正确,以及错误时的拼写建议列表</returns>
    public static (bool IsCorrect, List<string> Suggestions) CheckSpelling(string inputWord)
    {
        if (string.IsNullOrWhiteSpace(inputWord))
        {
            return (true, new List<string>());
        }

        _checker.Clear();
        _checker.Text = inputWord.Trim();

        // 查找第一个拼写错误的位置
        int errorIndex = _checker.GetNextSpellingErrorCharacterIndex(0, LogicalDirection.Forward);
        // 没有错误直接返回
        if (errorIndex < 0)
        {
            return (true, new List<string>());
        }

        // 获取拼写错误对应的建议列表
        SpellingError error = _checker.GetSpellingError(errorIndex);
        return (false, error.Suggestions.ToList());
    }
}
注意事项
  • 该实现依赖Windows平台的WPF运行时,不支持跨平台使用。
  • WPF控件要求运行在STA线程模型下,如果你的调用线程是MTA线程,需要单独创建STA线程执行校验逻辑。
  • 拼写检查的支持语言依赖系统安装的对应语言包,未安装的语言无法完成校验。

内容的提问来源于stack exchange,提问作者Tech Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:54:04