2010-12-13 46 views
0

J'ai un contrôle utilisateur complexe qui contient des vues, chacune ayant son propre ViewModel. Ma question est de savoir comment tous ces ViewModels peuvent partager des données (par exemple une collection observable) sans que chacun ait un appel distinct au service?Partage de données entre Silverlight ViewModels

Répondre

0

Le service doit être une abstraction des données. Que ces données proviennent d'un WS, DB, etc ... ne devrait pas être pertinent. Chaque ViewModel peut contenir une propriété qui sera liée à la vue. Cette propriété peut être un ObservableCollection<T> qui encapsule un appel au service. Ces données peuvent en fait être mises en cache via le service et ne sont mises à jour que périodiquement, mais dans les deux cas, elles pousseront les données vers un point de référence unique pour la récupération parmi les ViewModels.

+0

Merci Aaron, quand vous dites "point de référence unique", voulez-vous dire que le service devrait être mis en œuvre en tant que classe statique? – AssafDamari

+0

@Assaf cela peut dépendre ... mais dans votre instance de vouloir utiliser la mise en cache un singleton sous une forme ou une autre serait nécessaire; rendre ainsi votre service statique serait une option. Si vous utilisiez Prism ou une structure variable, vous pouvez définir la durée de vie de l'objet comme un singleton, de sorte que lorsque vous résolvez un type, il fournira la même instance au demandeur. –