RichTextBoxでスペルチェック
WPFにはSpellCheckクラスがあり、TextBoxでもRichTextBoxでもSpellCheck.IsEnabled="True"を加えれば、英語やドイツ語などのスペルチェッカーが使えるはずです。しかし、日本語環境ではそれだけではスペルチェッカーが有効になりません。
TextBox
TextBoxでは以下のように言語を設定すれば英語のスペルチェッカーが使えます。
<TextBox xml:lang="en-US" SpellCheck.IsEnabled="True" />
RichRextBox
RichTextBoxの場合は話が少し複雑です。
RichTextBoxの中身はFlowDocumentで、ユーザーが入力すると内部にParagraphを作成します。Paragraphでは入力時のキーボード構成を見て言語が設定されるようです。ですから、キーボード構成がENになっていると、言語指定なしでも英語のスペルチェックが有効になります。
キーボードがJPのときは(日本語Windowsではこれが標準)、SpellCheck.IsEnabled="True"に加えて、以下のようなコードで、入力後にFlowDocumentの言語を”en-us”に指定しないと、英語のスペルチェックが有効になりません。
private void myRichTextBox_LostFocus(
object sender, RoutedEventArgs e)
{
RichTextBox rtb = (RichTextBox)sender;
TextRange tr = new TextRange(rtb.Document.ContentStart,
rtb.Document.ContentEnd);
tr.ApplyPropertyValue(FrameworkElement.LanguageProperty,
"en-us");
}
マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。