【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

TextBoxを流用したIME入力

IMEの状態が検出できるようになったので、内部でTextBoxを利用して独自コントロールで文字入力してみました。 ⇒ 動作確認とソース

キャレットは点滅しません。カーソルキーやクリックで移動できません。編集は[Backspace]だけです。たまに変換中に文字を取りこぼして入力を受け付けなくなりますが、[Enter]を押して確定すると復活します。非同期で四重にチェックしてもこの状態のため、現時点で対策は思いつきません。

実装としては、昨日のサンプルで別々に表示していたパーツを重ねて1つのコントロールに見せ掛けています。IMEで入力中の文字はTextBoxからキャプチャしたImage、確定された文字はTextBlockです。TextBox自体は最前面で入力を受け持っていますが、Opacityをゼロにして隠しています。

これをベースにテキストエディタを実装しようと思います。