WPF richtextbox上的多语言拼写检查

时间:2010-04-16 17:05:00

标签: c# wpf .net-4.0 richtextbox spell-checking

我需要为富文本框打开拼写检查,并将语言设置为用户从下拉列表中选择的语言。现在,我只是通过在xaml中构建richtextbox并为xaml语言属性提供语言来测试它。

我读过两个不同的资源,一个说我需要设置语言属性,另一个说我需要设置xml:lang属性。似乎都没有用。我已经尝试为西班牙语设置任何一个“es”,我也尝试将两者设置为“es”。我也尝试过将法语设为“fr-FR”而没有成功。唯一发生的事情是英语单词没有标记,但其他语言单词标记为拼写错误。

我还读到我需要更改键盘语言。这对我的应用程序来说是一个问题,因为应用程序中的语言需要动态切换,因此让最终用户转到他们的键盘设置只是因为拼写检查将起作用是一个问题。但是,我已经更改了我的键盘设置,拼写检查仍然无法正常工作。这一次它没有标记拼写错误,甚至拼写错误的英语单词。

我错过了什么?

编辑: 上面我的参考文献的一些链接 http://msdn.microsoft.com/en-us/library/system.windows.controls.spellcheck(v=VS.100).aspx

http://www.dev102.com/2008/03/25/customize-spellcheck-on-wpf-text-controls/

http://books.google.com/books?id=clLc5BBHqRMC&pg=PA121&lpg=PA121&dq=C%23+wpf+enable+spellcheck&source=bl&ots=_r59pZRDjP&sig=yHMBc39EHKK5gaRMzxlBaEsY890&hl=en&ei=oXnIS8zWH4G88gaq48yGBw&sa=X&oi=book_result&ct=result&resnum=6&ved=0CBMQ6AEwBQ#v=onepage&q&f=false

2 个答案:

答案 0 :(得分:2)

我不确定问题在哪里,但这肯定适用于我的机器:

    <StackPanel>
        <TextBox SpellCheck.IsEnabled="True"
            Language="{Binding SelectedItem.Content, ElementName=lg, ConverterCulture=en-us}">

            Turtle tortue tortuga Schildkröte 

        </TextBox>
        <ComboBox Name="lg">
            <ComboBoxItem Selector.IsSelected="True">en-US</ComboBoxItem>
            <ComboBoxItem>fr-FR</ComboBoxItem>
            <ComboBoxItem>es-ES</ComboBoxItem>
            <ComboBoxItem>de-DE</ComboBoxItem>
        </ComboBox>
    </StackPanel>

修改适用于3.5,而不适用于4.0。有趣。

在3.5中,所有支持的词典都可以正常工作。在4.0 WPF拼写检查仅适用于英语。

修改2

它似乎仅适用于3.5,因为我使用的是Windows 7,所以我不需要语言包。

另一个问题是它的工作原理只是因为预设了文本。 您输入的任何文本都将从当前用户设置中获取该语言。

我想你的问题的解决方案是遍历整个内容,并在每次用户选择语言时更改它的语言属性。

答案 1 :(得分:1)

来自MSDN论坛:

“首先,我们是否需要WPF才能对英语/西班牙语/德语/法语进行拼写检查?

NetFx 3.5 SP1

Windows XP (语言包); Windows Vista (开箱即用); Windows 7 (开箱即用)

NetFx 4 Windows XP (语言包); Windows Vista (语言包); Windows 7 (语言包)

此处'语言包'表示您需要安装相应的.NET Framework语言包。例如,如果要在Windows XP和.NET Framework 3.5 SP1上启用西班牙语拼写检查,则安装.NET Framework 3.5 SP1西班牙语语言包。如果要在.NET Framework 4.0上启用德语拼写检查,则安装.NET Framework 4.0德语语言包。

.NET Framework 4.0语言包即将推出。

开箱即用意味着您无需执行任何操作,并且可自动使用四种语言的拼写检查。

如果您通过ClickOnce部署应用程序,则可以包含相应的语言包作为先决条件。有关在ClickOnce部署中包含语言包的帮助,您可以使用ClickOnce和Setup&amp; amp;部署项目论坛。

其次,RichTextBox控件如何确定要检查的语言?

如果Run元素标有特定语言,拼写检查将使用它:

        uno dos tres cuatrro        一二三四     

在运行时,拼写检查使用用于输入单词的输入语言,如上一篇文章所述。

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/06a2cc61-f2ae-4534-b35a-6c676bc2bcb2/?prof=required