syncfusion-wpf-spellchecker について
WPF 開発者向けに、テキスト編集コントロールへ Syncfusion SfSpellChecker を組み込む方法を案内します。ダイアログやコンテキストメニューの候補、多言語辞書、カスタム単語、無視ルールを扱います。
主な機能
- 01ダイアログまたはコンテキストメニューでスペルチェック
- 02リアルタイムの誤り表示と候補提示
- 03複数言語と複数の辞書形式に対応
- 04カスタム辞書と単語の追加
- 05URLやメールなどの無視ルール設定
活用シーン
- 01WPF テキストエディターへのスペルチェック追加
- 02多言語辞書を備えた文書エディターの作成
- 03専門分野の用語をカスタム登録
- 04メールや HTML の検査で指定テキストを無視
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ wpf-ui-components-skills --skill syncfusion-wpf-spellcheckerインストール後、Claude Code で/syncfusion-wpf-spellcheckerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/customization.mddictionary-support.mdgetting-started.mdignore-options.mdspell-check-methods.md詳細
Syncfusion WPF SpellChecker の実装
SfSpellChecker は、WPF テキストエディターコントロールのスペルミスをチェックするための、シンプルで直感的なインターフェイスを提供します。ダイアログやコンテキストメニューでスペルミスのある単語の候補を提示し、複数の言語やカルチャ、カスタム辞書、さまざまな無視オプションに対応しています。
このスキルを使用するタイミング
次のような場合にこのスキルを使用します。
- WPF の TextBox、RichTextBox、その他のテキストエディターコントロールにスペルチェック機能を追加する
- ダイアログベースまたはコンテキストメニューベースのスペルチェックを実装する
- スペルチェックで複数の言語やカルチャに対応する
- カスタム辞書(Hunspell、Ispell、OpenOffice 形式)を追加する
- メールアドレス、URL、HTML タグ、大文字と小文字が混在する単語などの無視ルールを設定する
- ユーザーにリアルタイムのスペル候補を提示する
- テーマを使ってスペルチェッカーの外観をカスタマイズする
- スペルチェック完了イベントを処理する
コンポーネントの概要
コントロール: SfSpellChecker (Syncfusion.Windows.Controls.SfSpellChecker)
プラットフォーム: WPF
名前空間: Syncfusion.Windows.Controls
アセンブリ: Syncfusion.SfSpellChecker.WPF
主な機能:
- 候補リストを表示するダイアログベースのスペルチェック
- エラーのある単語を右クリックしたときに候補を表示するコンテキストメニュー
- カスタム辞書による複数言語への対応
- 特殊なテキストパターンを無視するオプション
- カスタム単語辞書への対応
- エラーのリアルタイム表示
- 置換、すべて無視、辞書に追加の各操作
ドキュメントとナビゲーションガイド
はじめに
📄 参照: references/getting-started.md
- インストールとアセンブリの配置
- アプリケーションへの SfSpellChecker の追加
- TextBox へのスペルチェッカーの設定
- ダイアログを使った最初のスペルチェック
- コンテキストメニューの設定
- スペルチェックの有効化と無効化
- プログラムによる候補の取得
スペルチェックの方法
📄 参照: references/spell-check-methods.md
- ダイアログベースのスペルチェック
- コンテキストメニューベースの候補表示
- PerformSpellCheckUsingDialog メソッド
- エラーのある単語の強調表示
- 置換と無視の操作
- 辞書に追加する機能
無視オプション
📄 参照: references/ignore-options.md
- メールアドレスを無視する
- URL とインターネットアドレスを無視する
- HTML タグを無視する
- 大文字と小文字が混在する単語を無視する
- すべて大文字の単語を無視する
- 英数字の単語を無視する
- 設定例
辞書への対応
📄 参照: references/dictionary-support.md
- 英語の既定辞書
- 複数言語のスペルチェック
- Hunspell 辞書形式
- Ispell 辞書形式
- OpenOffice 辞書形式
- カスタム辞書の追加
- カスタム単語リスト
- 実行時のカルチャ切り替え
- DictionaryCollection の管理
カスタマイズとテーマ設定
📄 参照: references/customization.md
- SpellCheckCompleted イベント
- 完了メッセージボックスの制限
- SfSkinManager によるテーマ対応
- ThemeStudio によるカスタマイズ
- 外観オプション
クイックスタート
ダイアログを使った基本設定
<Window xmlns:syncfusion="http://schemas.syncfusion.com/wpf">
<Grid>
<StackPanel>
<TextBox
Text="Ths is a sampel text with speling errors."
Name="textbox"
TextWrapping="Wrap">
<syncfusion:SfSpellChecker.SpellChecker>
<syncfusion:SfSpellChecker
x:Name="spellChecker"
EnableSpellCheck="True"/>
</syncfusion:SfSpellChecker.SpellChecker>
</TextBox>
<Button
Content="Spell Check"
Click="SpellCheck_ButtonClick"
HorizontalAlignment="Center"/>
</StackPanel>
</Grid>
</Window>
// Code-behind
private void SpellCheck_ButtonClick(object sender, RoutedEventArgs e)
{
spellChecker.PerformSpellCheckUsingDialog();
}
コンテキストメニューを使ったクイック設定
<syncfusion:SfSpellChecker
x:Name="spellChecker"
EnableSpellCheck="True"
EnableContextMenu="True"/>
ユーザーはエラーのある単語(赤い下線付き)を右クリックして、候補を確認できます。
よくあるパターン
パターン 1:ダイアログを使った基本的なスペルチェック
// Create spell checker instance
SfSpellChecker spellChecker = new SfSpellChecker();
spellChecker.EnableSpellCheck = true;
// Attach to TextBox
SfSpellChecker.SetSpellChecker(textbox, spellChecker);
// Open spell check dialog
spellChecker.PerformSpellCheckUsingDialog();
パターン 2:無視オプション付きのコンテキストメニュー
SfSpellChecker spellChecker = new SfSpellChecker();
spellChecker.EnableSpellCheck = true;
spellChecker.EnableContextMenu = true;
// Configure ignore options
spellChecker.IgnoreUrl = true;
spellChecker.IgnoreEmailAddress = true;
spellChecker.IgnoreUpperCaseWords = true;
SfSpellChecker.SetSpellChecker(textbox, spellChecker);
パターン 3:複数言語への対応
// Create culture-specific spell checker
CultureInfo culture = new CultureInfo("fr-FR");
SfSpellChecker spellChecker = new SfSpellChecker();
// Add French dictionary
spellChecker.Dictionaries = new DictionaryCollection();
spellChecker.Dictionaries.Add(
new HunspellDictionary()
{
Culture = culture,
GrammarUri = new Uri("/MyApp;component/Dictionaries/fr-FR.aff", UriKind.Relative),
DictionaryUri = new Uri("/MyApp;component/Dictionaries/fr-FR.dic", UriKind.Relative)
}
);
spellChecker.Culture = culture;
SfSpellChecker.SetSpellChecker(textbox, spellChecker);
パターン 4:カスタム辞書
// Add custom words dictionary
Uri customDictUri = new Uri(Directory.GetCurrentDirectory() +
@"\Dictionaries\CustomWords.txt", UriKind.Absolute);
spellChecker.Dictionaries.Add(
new CustomDictionary()
{
Culture = new CultureInfo("en-US"),
DictionaryUri = customDictUri
}
);
パターン 5:スペルチェック完了の処理
spellChecker.SpellCheckCompleted += (sender, e) =>
{
// Suppress default message box
(e as SpellCheckCompletedEventArgs).ShowMessageBox = false;
// Custom completion logic
MessageBox.Show("Spell check completed!", "Done");
};
主なプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
EnableSpellCheck | bool | スペルチェックを有効または無効にします(デフォルト:true) |
EnableContextMenu | bool | コンテキストメニューの候補を有効または無効にします(デフォルト:true) |
Culture | CultureInfo | スペルチェックに使用するカルチャ |
Dictionaries | DictionaryCollection | 辞書のコレクション |
IgnoreUrl | bool | インターネットアドレスを無視します |
IgnoreEmailAddress | bool | メールアドレスを無視します |
IgnoreHtmlTags | bool | HTML タグを無視します |
IgnoreMixedCaseWords | bool | 大文字と小文字が混在する単語を無視します(例:AbCDeFH) |
IgnoreUpperCaseWords | bool | すべて大文字の単語を無視します |
IgnoreAlphaNumericWords | bool | 数字を含む単語を無視します |
主なメソッド
| メソッド | 説明 |
|---|---|
PerformSpellCheckUsingDialog() | スペルチェックのダイアログを開きます |
GetSuggestions(string word) | 誤りのある単語の候補リストを取得します |
GetPhoneticWords(string word) | 音声上の単語候補を取得します |
GetAnagrams(string word) | アナグラムの候補を取得します |
一般的なユースケース
- スペルチェック機能付きテキストエディター - WPF テキストエディターに包括的なスペルチェック機能を追加します
- 多言語ドキュメントエディター - カルチャ固有の辞書を使用して複数の言語に対応します
- カスタムドメイン辞書 - 業界固有または会社固有の用語を追加します
- メールクライアント - メールアドレスや URL を無視するオプションを使用してスペルチェックします
- HTML エディター - HTML マークアップを無視してスペルチェックします
- フォームの検証 - テキスト入力フィールドのスペルミスを検証します
- アクセシブルなテキスト入力 - エラーを簡単に修正できるよう、コンテキストメニューを提供します
サンプルアプリケーション
GitHub のサンプル:WPF SpellChecker Examples