2014年11月13日木曜日

BindingしているTextBoxで、閉じた時に更新されない

次の2行のコードは恐らく等価でありますので、フォーカスを失うまで、Bindingは書き戻しされません。

<TextBox Text="{Binding 品番}" />
<TextBox Text="{Binding 品番,UpdateSourceTrigger=LostFocus}" />

特にWindowを閉じた場合、書き戻しされない事が有り、結構困ったりします。

次のように書けば解決なのですが、全てに UpdateSourceTrigger=PropertyChanged を追加していくのも気が遠くなる話です。

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

そこで、BindingGroupを使って、楽をしています。こちらに詳細を残しています。

*但し、この方法には副作用が有ります。
DataRowViewへアクセスする前に、BindingGroup.CommitEdit(); を呼ばないと、DataRowViewに反映されません。
メソッドの入り口にCommitEditが多くなるきらいが有りますが… そこはバランスを考えます。

0 件のコメント:

コメントを投稿