WPF でのテキスト入力は TSF ( Text Services Framework ) 経由で行われます。IME を利用して日本語を入力する際には、 変換候補を変えるごとに、 テキストボックスで TextChanged イベントが発生します。 テキストボックスは、 TextChanged イベントで Maxlength のチェックをします。つまり、 IME での変換中であっても、 Maxlength のチェックが行われます。 そのため、 たとえば Maxlength = 3 に設定したテキストボックスに、 「日本語」 (3文字) と入力することができません。また、 IME の候補ウィンドウが出た状態で、 変換候補を次々と変えていく途中で、 Maxlength を超える長さの候補文字列が選択状態になると、 IME の候補ウィンドウを閉じることができなくなったり、 逆に、 選択状態になった瞬間に閉じてしまったりします。この挙動のため、 テキストボックスの Maxlength プロパティは、 事実上、 利用できなくなっています。 ( 数字のみの入力であっても、 IME を ON にしたまま変換して数字を出す、 というユーザもいらっしゃいます。 )関連情報: MSDN フォーラム・ TextBox.MaxLengthプロパティの設定でおかしくなる。http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=964243&SiteID=7・ IME で文字列を確定させたことが分からない (Re: TextBoxで入力にフィルターをしたい。) http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=659810&SiteID=7