WPF RichTextBox - 拼写检查不适用于格式化文本

时间:2009-03-12 11:27:47

标签: wpf richtextbox spell-checking

如果我按如下方式定义RichTextBox;

<RichTextBox SpellCheck.IsEnabled="True">
    <FlowDocument />
</RichTextBox>

当我输入作品'Sample'并将前三个字母变为粗体时,拼写检查器会突出显示该单词。

文档的源XAML显示RichTextBox将单词分成两个单独的运行;

<Paragraph>
    <Run FontWeight="Bold" xml:lang="en-gb">Sam</Run>
    <Run xml:lang="en-gb">ple</Run>
</Paragraph>

如果我使用以下块手动构建文档;

<FlowDocument>
    <Paragraph>
        <Run FontWeight="Bold">Sam</Run>ple
    </Paragraph>
</FlowDocument>

拼写检查程序成功传递了这个词。

有没有人遇到过这个?我有可以使用的解决方法吗?

由于 马特

1 个答案:

答案 0 :(得分:1)

拼写检查器和不同的区域设置似乎存在问题。

如果我从这开始:

<RichTextBox SpellCheck.IsEnabled="True" xml:lang="en-GB">
    <FlowDocument />
</RichTextBox>

我可以重现你的错误(通过输入“Sample”并加粗“Sam”),但不是这样:

<RichTextBox SpellCheck.IsEnabled="True">
    <FlowDocument />
</RichTextBox>

有人遇到类似的问题here。微软回复:

  

出现此问题的原因是FrameworkElement上的Language属性(以及TextBox / RichTextBox)默认为“en-US”,并且您使用的是“en-NZ”语言环境。当您在TextBox / RichTextBox中键入文本时,它将使用与XAML中设置的文本不同的语言环境。拼写检查器不会跨越语言边界,从而导致您看到的行为。