WPF で入力項目ごとに IME を自動切り替え
する必要があって調べたのでメモしておきます。
WPF での IME の切り替えは、System.Windows.Input 名前空間の InputMethod.Current.ImeState プロパティの値を設定するだけです。
従って、以下のようなイベントイベントハンドラを用意しておいて、XAML 側で GotFocus イベントが発生したら、必要なイベントハンドラを呼び出すだけで自動切り替えが実現できます。
[C#]
private void Ime_On(object sender, RoutedEventArgs e) {
InputMethod.Current.ImeState = InputMethodState.On;
}
private void Ime_Off(object sender, RoutedEventArgs e) {
InputMethod.Current.ImeState = InputMethodState.Off;
}
[XAML]
<TextBox GotFocus="Ime_Off"/>
<TextBox GotFocus="Ime_On"/>
InputMethod クラスは IME の設定の他にも、テキスト入力方法に関する様々な設定ができるようです。
詳細は、以下を確認してみて下さい。
http://msdn.microsoft.com/ja-jp/library/system.windows.input.inputmethod.aspx
InputMethod クラス
[追記]
コメントで、XAML だけで切り替える方法も教えていただきました。
[XAML]
<TextBox InputMethod.PreferredImeState="On" />
<TextBox InputMethod.PreferredImeState="Off" />
細かい制御が不要なら、XAML だけで完結させてしまった方が簡潔に記述できますね。