【问题标题】:WPF RichTextBox - spell check does not work with formatted textWPF RichTextBox - 拼写检查不适用于格式化文本
【发布时间】:2011-05-23 16:02:39
【问题描述】:

如果我定义一个 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>

拼写检查器成功通过了单词。

以前有人遇到过这种情况吗?有没有我可以使用的解决方法?

谢谢 马特

【问题讨论】:

    标签: wpf richtextbox spell-checking


    【解决方案1】:

    拼写检查器和不同的语言环境似乎存在问题。

    如果我从这个开始:

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

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

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

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

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

    【讨论】:

    • 感谢您的回复和MS页面的链接。等到 .Net 4.0 对我来说似乎是最好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2011-02-02
    相关资源
    最近更新 更多