TextBox で IME を ON にする

こんばんは、siokoshou です。好きなものはコーヒーです。

TextBox で IME を ON にするには、<TextBox InputMethod.PreferredImeState="On" /> のように書けば OK です。しかし、WinForm では特定のコントロール上では ON、ほかでは元のままとすることができたけど、この方法ではいったん ON になると後はどこでもずーっと ON です……。同様のことがしたければ、GotFocus/LostFocus で InputMethod.SetPreferredImeState( textbox, InputMethodState.On ); のように書くことで制御するしかないようです。
では、サンプル。

<Window x:Class="ImeTest.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window1" Height="150" Width="300">
  <UniformGrid Columns="2">
    <Label Target="{Binding ElementName=DoNotCare}">IME _DoNotCare</Label>
    <TextBox Name="DoNotCare" InputMethod.PreferredImeState="DoNotCare" />

    <Label Target="{Binding ElementName=On}">IME O_N</Label>
    <TextBox Name="On" InputMethod.PreferredImeState="On" />

    <Label Target="{Binding ElementName=Off}">IME O_FF</Label>
    <TextBox Name="Off" InputMethod.PreferredImeState="Off" />

    <Label Target="{Binding ElementName=Combo}">_ComboBox</Label>
    <ComboBox Name="Combo" IsEditable="True" GotFocus="Combo_GotFocus" />
  </UniformGrid>
</Window>

WPF + IME といえば、この話題にも注目です。 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1497209&SiteID=7