Posted at

TextBoxでEnter Keyが押されたことを検知して入力値も取得する方法

More than 3 years have passed since last update.

検索ボックスなどでよくわるキーワードを入力し、Enter Key押下で実行みたいなことをやろうとしたときに意外とハマったのでメモ。

最初イベントだけ検知して入力文字列はTextにバインドさせたSearchWordTxtから取得しようとしたのだけれど、TextBoxのTextに値がはいるのはフォーカスが外れた後、つまりEnter Key押下のイベントを検知した段階ではまだSearchWordTxtはNullだった。

なるほどなーと思いどうにかイベント検知時にイベント引数として入力文字列を渡せないかとググってみるとstackoverflow先生が答えを教えてくれました。

http://stackoverflow.com/questions/5556489/capturing-the-enter-key-in-a-textbox

        <TextBox x:Name="SearchWord" Text="{Binding SearchWordTxt, Mode=TwoWay}" Height="23">

<TextBox.InputBindings>
<KeyBinding Gesture="Enter" Command="{Binding SearchCommand}" CommandParameter="{Binding ElementName=SearchWord, Path=Text}"/>
</TextBox.InputBindings>
</TextBox>