41 votes

Devrais-je utiliser le modèle MVVM (Model-View-ViewModel) dans les projets Silverlight?

Un défi avec les contrôles Silverlight est que lorsque les propriétés sont liées à code, ils ne sont plus vraiment modifiable dans le Mélange. Par exemple, si vous avez une ListView qui est rempli à partir d'un flux de données, il n'y a pas d'éléments visibles lorsque vous modifiez le contrôle dans le Mélange.

J'ai entendu dire que le pattern MVVM, à l'origine par le WPF communauté de développement de l', peut également aider à maintenir les contrôles Silverlight "blendable". Je suis toujours enveloppant ma tête autour de lui, mais voici quelques explications:

Un désavantage est que le modèle exige d'autres classes, mais pas nécessairement plus de code (comme indiqué par le second lien ci-dessus). Pensées?

32voto

Jonas Follesø Points 3650

Je crois vraiment que vous devriez utiliser le pattern MVVM pour les applications Silverlight - et l'un des avantages de ce modèle est que vous pouvez réellement faire de votre demande vraiment blendable grâce à quelques techniques simples. Je fais souvent référence à "blendability" comme "la conception de programme designability" - vous d'utiliser certaines techniques pour vous assurer que votre application ressemble beaucoup dans le Mélange.

L'une des techniques comme Torbjørn des points est d'utiliser un framework injection de dépendance et d'approvisionnement des différentes implémentations de vos services externes selon que le code est exécuté dans le Mélange ou dans le Navigateur. J'ai donc configurer mon conteneur à utiliser un mannequin fournisseur de données lorsque le code est en cours d'exécution dans le Mélange, et de cette façon vous aurez de temps de soutien pour votre liste de boîtes, de grilles de données etc.

Le défi est souvent de savoir comment définir le DataContext de manière déclarative - j'ai donc souvent à l'aide d'un localisateur de service de classe a, un "front-end" pour le conteneur IoC. De cette façon, je peux lier le contexte de données d'une propriété sur le service locator.

Une autre technique est de créer une sorte de contrôle ObjectDataSource (non visible) qui a deux propriétés: la Conception du Temps DataContext de l'Exécution et des Données de Contexte. Le contrôle de fait le travail de détection, où est en cours d'exécution, puis en définissant le Parent DataContext à droite de l'objet.

4voto

Torbjørn Points 2517

Je ne suis pas sûr si je peux répondre à votre question, mais j'ai a trouvé l'article ci-dessous de très précieux. Jonas Follesø est à l'aide de ninject pour passer de ses services lors de la conception/mode de fusion. Très sympa!

http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx

3voto

John Papa Points 7845

Je suis également d'accord avec Jonas concernant MVVM avec Silverlight. Je crois que MVP est également un bon choix, mais récemment, j'ai eu le temps d'essayer à la fois le titre de MVP et MVVM avec Silverlight et je suis beaucoup plus heureux avec les résultats de MVVM. (Oui, j'ai changé mon esprit le plus que j'ai utilisé MVVM). La VM résumés de la liaison du Modèle à partir de la Vue (évidemment) dans MVVM qui permet à plus de liaison de scénarios (au moins nettoyeur de façons de le faire) qu'avec MVP. C'est juste un aspect, cependant.

Je vais poster quelques exemples à la fois le titre de MVP et MVVM avec Silverlight sur mon site.

2voto

Daniel Crenna Points 1853

J'ai essayé quelques options et je suis à régler sur MVVM comme le meilleur choix pour moi. Blendability est un point important, et je trouve aussi que la VM aspect intuitif pour le montage dynamique des comportements et de procédure des effets et des animations (comme Nikhil Silverlight.FX). À un moment, j'ai essayé d'éviter de Mélanger complètement à travers des interfaces couramment, mais je suis de trouver le couplage entre l'INTERFACE utilisateur et le comportement trop douloureux à la longue. Je veux concevoir mon INTERFACE utilisateur dans le Mélange, puis ajouter des effets et d'autres comportements dans le code, cela se révèle être le meilleur modèle de me suivre jusqu'ici.

2voto

Mark Heath Points 22240

Je pense que beaucoup d'entre nous sont en attente pour les pionniers du genre à aller de l'avant et créer vraiment de bons exemples d'applications utilisant MVVM en Silverlight (et WPF pour cette question). Il y a un certain nombre de zones difficiles d'accès telles que le manque de ICommand dans Silverlight, ou la difficulté à interagir avec les animations de démarrage et d'arrêt uniquement à l'aide de la liaison de données.

Son certainement un modèle de montre pour l'avenir si, et vaut la peine d'essayer si vous n'avez pas l'esprit de 'tricher' occasionnellement dans les endroits où vous ne pouvez pas tout à fait le comprendre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X