WPF拼写检查是如何内部工作的?

4

在开发我的当前项目的界面时,我意识到WPF为TextBox等控件内置了拼写检查功能。我不知道为什么会感到惊讶,但确实如此。也许是因为我习惯于Winforms,而它没有包含拼写检查功能。

enter image description here

我完全不知道这一点,更重要的是,我甚至没有注意到这样一个功能在运行时被加载。考虑到内置字典显然很好,你会认为加载单词列表会产生某种启动时间限制;我试图测试它的能力,它提供了一些我甚至认为不会出现在标准字典中的单词。
因此,我真的只想知道这样一个功能是如何在运行时初始化的。WPF如何处理加载单词?它是否将加载延迟到计算机启动时的Windows环境中?它是否每次启动应用程序时都会加载字典?这个所谓的字典是否位于磁盘上某个可访问级别,以便我可以查看它?

2
它可能使用Windows 8中引入的新的系统范围拼写检查功能:https://blogs.msdn.microsoft.com/murrays/2012/08/31/richedit-spell-checking-autocorrection-and-prediction/ - Dai
1个回答

8
WPF使用COM互操作来利用Windows内置的拼写支持。这取决于您使用的版本。对于Windows 8及更高版本,它使用记录在API中的方法。拼写检查器由ISpellCheckerFactory及其相关类实现,并由c:\windows\system32\MsSpellCheckingFacility.dll执行。它还调用一个WinRT类来将句子分解成单词,Windows.Data.Text.WordSegmenter会完成这项工作。
这两个组件都不适用于Win7及以下版本,然后退回到由c:\windows\system32\NaturalLanguage6.dll实现的COM服务,ILexicon是主要接口。Microsoft没有为这个提供文档,但可以在参考源代码中看到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接