トップ > Tech > CSharp > WPF > TextBoxの入力をすぐにバインディングソースに反映する

TextBoxの入力をすぐにバインディングソースに反映する

WPF のテキストボックスで、Text にバインドしている場合、通常はテキストボックスがフォーカスを失うとき (LostFocus)にバインディング元(ソース)が更新される。

ふつうはこれで問題ないのだが、別のコントロールに入力文字数を表示しているときなど、入力中に更新してほしい場合は、これでは困る。

下記ページで解決策を見つけたので、メモしておく。

基本的には Binding の UpdateSourceTrigger を PropertyChanged に変えればよい。これでテキストが変更されたとき(TextChanged)にソースが更新されるようになる。

XAML の場合はこんな感じ。

<TextBox Text="{Binding Path=Text, UpdateSourceTrigger=PropertyChanged}"/>

ちなみに UpdateSourceTrigger の既定値は LostFocus。また、Explicit に設定するとユーザーが下記のようなコードで UpdateSource を呼び出すまで、変更が遅延できる。

BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
(2010/09/22 10:24:10)
41625
プロフィール

Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。 好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。 詳しくは Web mixi で。

Bookmark and Share