La documentation MSDN indique :
Les liaisons qui sont TwoWay ou OneWayToSource écoutent les changements dans la propriété cible et les propagent de nouveau vers la source. Cela est connu sous le nom de mise à jour de la source. Généralement, ces mises à jour se produisent chaque fois que la propriété cible change. C'est bien pour les cases à cocher et autres contrôles simples, mais ce n'est généralement pas approprié pour les champs de texte. La mise à jour après chaque frappe de touche peut diminuer les performances et elle prive l'utilisateur de la possibilité habituelle de revenir en arrière et corriger les erreurs de frappe avant de s'engager dans la nouvelle valeur. Par conséquent, la valeur par défaut d'UpdateSourceTrigger de la propriété Text est LostFocus et non PropertyChanged.
Je comprends que dans une situation où la mise à jour va directement vers une base de données, ou à travers un réseau, ou s'il s'agit d'une très grande quantité de données, cela pourrait effectivement diminuer les performances d'utiliser UpdateSourceTrigger = PropertyChanged sur les TextBoxes.
Mais si l'on met simplement à jour une simple DependencyProperty, ou une propriété d'un objet Entity Framework (avant de valider), le coup de performance ne serait-il pas négligeable ?
Je me demande, car je crée une application WPF qui suit l'état de l'objet en cours d'édition et optimise l'apparence du bouton Enregistrer en fonction des changements qui ont été apportés. Je pensais que la manière la plus simple de déterminer les changements serait de capturer les occurrences pertinentes de SourceUpdated au moment opportun. Cela fonctionne de manière optimale lorsque UpdateSourceTrigger = PropertyChanged pour les zones de texte, car l'utilisateur reçoit un retour instantané qu'il existe des changements "enregistrables".