2008-11-26 5 views
5

J'ai un ListView WPF qui est lié à une BindingList <T>. La liaison fonctionne comme un charme, mais je dois sortir de la cellule pour obtenir la propriété liée à mettre à jour .... c'est un problème parce que la plupart des utilisateurs ne tabulent pas de la dernière colonne avant de cliquer sur le bouton Enregistrer. Comment puis-je forcer l'affichage de la liste à "persister" les modifications apportées au DataContext lié sans faire quelque chose de hackish.WPF listview databinding - Comment forcer la mise à jour d'un objet sous-jacent sans tabulation?

Répondre

11

Les liaisons dans WPF ont une propriété appelée "UpdateSourceTrigger" qui indique à la liaison quand mettre à jour la chose à laquelle l'interface utilisateur est liée. Par défaut, il est défini sur "LostFocus" pour la propriété Text, que vous utilisez probablement.

Modifier le déclencheur pour « PropertyChanged » dans votre fixation comme celui-ci: la propriété

Text="{Binding Foo,UpdateSourceTrigger=PropertyChanged}" 

... et maintenant la source « Foo » seront mis à jour les modifications de texte dans l'interface utilisateur.

Il existe également un paramètre "Explicite" pour UpdateSourceTrigger, ce qui est pratique si vous devez attendre pour modifier les modifications apportées à la source jusqu'à ce que, par exemple, l'utilisateur clique sur le bouton OK.

+0

Comment utiliser cette propriété explicite? Comment déclenchez-vous la mise à jour? – GWLlosa

+1

@GWLlosa: Il se peut que ce soit vraiment en retard, mais pour le vôtre et celui des autres, voici comment déclencher la mise à jour: http://msdn.microsoft.com/fr-fr/library/system.windows.data.bindingexpression.updatesource .aspx – skybluecodeflier

Questions connexes