1

次のように RichTextBox を定義するとします。

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

「Sample」と入力して最初の 3 文字を太字にすると、スペル チェッカーが単語に下線を引きます。

ドキュメントのソース XAML は、RichTextBox が単語を 2 つの別々のランに分割していることを示しています。

<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>

スペル チェッカーは単語を正常に渡しました。

誰もこれに遭遇したことがありますか?使用できる回避策はありますか?

ありがとうマット

4

1 に答える 1

1

スペル チェッカーと異なるロケールに問題があるようです。

これで始めると:

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

エラーを再現できます (「Sample」と入力し、「Sam」を太字にすることで) が、これでは再現できません。

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

誰かがここで同様の問題を抱えています。マイクロソフトは次のように答えます。

この問題は、FrameworkElement (および TextBox/RichTextBox) の Language プロパティの既定値が "en-US" であり、"en-NZ" ロケールを使用しているために発生します。TextBox/RichTextBox にテキストを入力すると、XAML で設定されたテキストとは異なるロケールになります。スペル チェッカーは言語の境界を越えないため、表示される動作が発生します。

于 2009-03-13T18:26:01.287 に答える