2011-01-04 6 views
0

J'ai une question concernant MVVM pour WP7. Dans mon application, j'ai une sorte de datepicker ou un calendrier si vous voulez. Donc, après avoir choisi un jour, on peut choisir d'éditer les informations concernant ce jour en cochant dessus et en accédant à une autre page. Le problème est que lorsque je change certaines informations et que je clique sur le bouton de retour, l'information qui a été modifiée n'a pas été mise à jour dans les liaisons correspongentes. C'est pourquoi, sur l'événement navigatedto, j'appelle une méthode publique de ma machine virtuelle pour cette page. Le seul but de cette méthode (RefreshSelectedDay) est d'appeler RaisePropertyChanged afin que les champs de texte liés sur la page obtiennent les nouvelles informations. Cependant, rien ne se passe. Les informations sont des propriétés actaully de la propriété SelectedDay qui est une instance de la classe MyDay. Ma solution comme vous pouvez le voir est loin d'être élégante. Qu'est-ce qui se passe IMO est que si j'appelle juste le RaisePropertyChanged il ne se propagera pas parce que c'est la même variable et juste une de ses propriétés a changé. Ce serait bien si quelqu'un peut expliquer ce qui se passe.étrange comportement RaisePropertyChanged

+0

Utilisez-vous un framework pour MVVM? Si oui, lequel? –

+0

MVVM-Light pour ce projet. – Miro

Répondre

0

"Le problème est que lorsque je change certaines informations et que je clique sur le bouton" Précédent ", les informations qui ont été modifiées n'ont pas été mises à jour dans les liaisons correspongentes."

Cela me implique que les informations qui soi-disant a été modifié, n'a pas été modifié effectivement. Cela expliquerait aussi pourquoi youre RefreshSelectedDay ne semble pas fonctionner non plus.

Modifiez-vous les propriétés sur SelectedDay, ou en créant une nouvelle instance, et cela n'est pas défini?

Si vous modifiez les propriétés sur SelectedDay, cette classe génère-t-elle correctement les notifications de modification de propriété?

Plus de code nous aiderait aussi à déboguer.

+0

Eh bien, j'ai vérifié cela plusieurs fois et il est modifié. La variable selectedDay contient les nouvelles informations. MyDay est un modèle dans mon application, donc ses propriétés ne déclenchent pas les notifications modifiées par la propriété. Cependant, SelectedDay est utilisé comme un datacontext de la grille dans laquelle il y a des blocs de texte liés aux propriétés de SelectedDay. Dans ce cas, RaisePropertyChanged doit notifier que le datacontext est modifié et que les blocs de texte doivent se reconnecter. – Miro

+0

c'est vrai, ils devraient. sans plus de code je ne vois rien d'obvoius ... –