Respecter MVVM avec WCF (datacontract datamember)
bonjour à vous tous !
Ma question est simple mais avant de vous la soumettre je vais vous exposer le contexte.
Donc j'ai une application silverlight avec une architecture MVVM. J'ai aussi un webservice wcf.
Dans le service web j'ai plusieurs classes qui utilisent les attributs Datacontract / Datamember etc.
Dans mon application silverlight, j'ai des view et des viewmodels.
Admettons la classe suivante dans le service web (code écrit directement à la main pour schématiser l'exemple afin que vous voyez où je veux en venir)
Code:
1 2 3 4 5 6
| [DataContract] MaClasse {
[DataMember] int Id {get;set;}
[DataMember] string Libelle {get;set;}
[DataCollection] ObservableCollection<UneAutreClasse> Liste {get;set;}
} |
Ma vue (côté silverlight) a une datagrid avec pour ItemsSource une ObservableCollection<MaClasse>. Dans cette datagrid, il y a une column de type combobox. Cette combobox a pour ItemsSource MaClasse.Liste.
Ma question est la suivante : où placer la property SelectedUneAutreClasse bindé sur la property SelectedItem de la combobox ?
1) Dans le viewModel ? Ce qui implique d'avoir une collection de SelectedItem car pour chaque Row, j'ai un SelectedUneAutreClasse.
2) Dans la classe côté service ? Mais dans ce cas j'ai l'impression de violer les principes de MVVM car je déporte les éléments de mon viewModel dans ma classe côté webservice. De plus, les webservices étant utilisés par d'autre appli (ASP.NET classique) donc ils auront des classes contenant les SelectedItem sans forcément en avoir l'utilité.
3) En utilisant les class partiels j'ai le même problème que pour le 2) mais à la différence que je peux avoir un fichier propre et un fichier extension qui contient les selected item etc.
4) Obi wan kenobi
5) autre ...
Pour plus d'info qui vous aiderons à me répondre, je possède des classes très grandes et avec beaucoup de liste encapsuler à l'intérieur donc beaucoup de SelectedItem à placer.
Merci beaucoup d'avance. ++ à vous tous ! Et vive silverlight :mrgreen: et à ba les balises html 5 propriétaires (ou alors ptête un big up car ça donne un argument de plus pour rester sur silverlight :lol:)