MSDN のドキュメントには次のように記載されています。
TwoWay または OneWayToSource であるバインディングは、ターゲット プロパティの変更をリッスンし、それらをソースに伝達します。これは、ソースの更新として知られています。通常、これらの更新は、ターゲット プロパティが変更されるたびに発生します。これは、チェック ボックスやその他の単純なコントロールでは問題ありませんが、通常、テキスト フィールドには適していません。キーストロークのたびに更新すると、パフォーマンスが低下する可能性があり、ユーザーが新しい値にコミットする前にバックスペースして入力エラーを修正する通常の機会が失われます。したがって、Text プロパティの既定の UpdateSourceTrigger 値は LostFocus であり、PropertyChanged ではありません。
更新がデータベースまたはネットワーク経由で直接行われる状況、またはデータが非常に大量の場合、TextBox で UpdateSourceTrigger = PropertyChanged を使用すると実際にパフォーマンスが低下する可能性があることを理解しています。
しかし、単純な DependencyProperty、または Entity Framework オブジェクトのプロパティを (コミットする前に) 更新するだけの場合、パフォーマンスへの影響は無視できないでしょうか?
編集中のオブジェクトの状態を追跡し、変更が行われたかどうかに応じて [保存] ボタンの外観を最適化する WPF アプリを作成しているため、不思議に思っています。変更を判断する最も簡単な方法は、関連する SourceUpdated の発生を適切にキャッチすることだと思いました。テキストボックスの UpdateSourceTrigger = PropertyChanged の場合に最適に機能します。これは、ユーザーが「保存可能な」変更があるという即座のフィードバックを受け取るためです。