2011-03-28 10 views
0

J'ai un modèle de vue qui a un objet EF comme l'une de ses propriétés. La vue comporte plusieurs zones de texte câblées à cette propriété via Text="{Binding Path=MyEFTable.Column1}". J'utilise le toolkit MVVM Light pour que mes viewmodels héritent de ViewModelBase et par la suite chaque propriété appelle RaisePropertyChanged() lorsqu'elle est modifiée.Modification de propriété d'objet EF - MVVM

J'ai remarqué, cependant, que le changement MyEFTable.Column1 ne déclenche aucune modification dans le modèle de vue. Je pensais que les objets EF suivaient toutes les modifications, donc je supposais que changer une valeur de colonne dans un objet EF provoquerait la modification de l'objet EF lui-même. Est-ce qu'il ne suit plus les changements puisque je copie essentiellement le résultat de la requête dans un nouvel objet MyEFTable?

Répondre

0

Vos objets bindables implémentent-ils INotifyPropertyChanged ou son conteneur, comme ObservableCollection? Êtes-vous à la hausse de l'événement?

L'utilisation d'un modèle de vue est seulement le début. La première chose à vérifier est de voir si la propriété Column1 est mise à jour après l'édition. Si un TextBox, la valeur par défaut UpdateSourceTrigger est LostFocus. Peut-être que vous pouvez essayer de le changer en PropertyChanged. Si la valeur est mise à jour dans votre MyEFTable.Column1 vous avez terminé. Sinon, encore une fois, quelque chose utilise l'INotifyPropertyChange.

Ajoutez plus d'informations et peut-être que le problème sera plus clair.

HTH

+0

Si l'objet est une entité capable de se lier EF, ne pas mettre en œuvre déjà INotifyPropertyChanged? J'ai fait quelques tests et constaté que les propriétés de l'objet changent, donc tout ce que j'ai vraiment besoin de faire maintenant est de trouver un moyen de les sauvegarder dans la base de données. J'espérais éviter les déclencheurs d'événements de vue, mais je suppose que c'est peut-être le moyen le plus simple. – Marc

+0

Je n'implémente pas INPC, mais si les propriétés de votre objet bindable vous ont résolu la plupart de vos problèmes :) – Marcote

Questions connexes