6
votes

Dans MVVM, il ne peut y avoir une seule vue pour chaque modèle de vue?

comme je lis ici:

http://msdn.microsoft.com /en-us/library/gg405484(V=Pandp.40).aspx

Il y a typiquement un un à un relation entre une vue et sa Voir le modèle.

Cela signifie que, par design, ils ne font pas vraiment face à plusieurs vues?


2 commentaires

En fait, plusieurs vues peuvent utiliser un modèle de vue (différents types de graphiques, par exemple). De plus, ces vues peuvent être commutées à l'aide de dataMplateselector, voici ma réponse à une autre question où j'ai créé un exemple de ce situatuon: Stackoverflow.com/Questtions/5309099/...


Merci la lire, mais j'ai un problème avec DataMplateselector Stackoverflow.com/Questtions/5607619/...


5 Réponses :


5
votes

Je pense que c'est généralement le cas dans la pratique. Cependant, la beauté de la séparation de la présentation dans une vue et d'une vue de vue signifie que vous pouvez facilement créer de nombreuses vues différentes, chacune montrant essentiellement les mêmes données du modèle, tous partageant la même classe de visitel (peut-être ou peut-être pas le même instance ). Par exemple, je pourrais avoir un simple et avancé de mes données, écrit principalement dans XAML comme deux entièrement différent d'UserControl, à la fois partageant la même viewModel (classe ou peut-être une instance) . Sans utiliser MVVM, cela serait plus délicat à faire sans duplication de code.


4 commentaires

Le problème est la portabilité, puis Stackoverflow.com/Questtions/5607619/...


Comment la question de la portabilité se rapporte-t-elle à plusieurs vues pour un point de vue?


Parce que si je veux faire plusieurs vues sur plusieurs plates-formes et que l'utilisation de MS MVVM n'est pas portable, je ne peux pas l'utiliser.


Si vous lisez la réponse, cela vous suggère de pouvoir, mais oui, un chemin direct n'existe pas.



2
votes

Dans MVVM, vous avez une vue (présentation) et une vue de vue (logique) qui est destinée à prendre en charge les besoins de présentations. Vous pouvez facilement avoir plusieurs vues pour une vue de vue, et cela est souvent attendu, principalement dans le cas où vous avez plusieurs objets de type de données (qui est une vue) liée à un type de vue de vue unique basé sur le contexte dans lequel il est utilisé. < / p>

Bien qu'il y ait typiquement une mappage de ceux-ci, ce n'est pas un limitation mais une convention et il n'y a pas de "limitation de conception" dans le motif MVVM.


2 commentaires

Comment est-il une convention si on doit utiliser le sélecteur de dataTemplate pour obtenir plusieurs vues? Ce n'est probablement pas portable Stackoverflow.com/Questtions/5607619/...


La convention est celle de la convention de la convention. Les moyens par lesquels vous mettez en place un mappage de plusieurs à une mappage est à vous.



2
votes

correct. Typiquement, voir le modèle est conçu spécifiquement pour une vue. Il n'a pas de connaissances sur des contrôles spécifiques utilisés dans la vue, mais il a la connaissance structurelle et fonctionnelle. Avoir des vues multiples et un modèle d'avis rendrait souvent la classe modèle de vue violer le principe de responsabilité unique.

Bien que, parfois, il est logique d'avoir plusieurs vues et un modèle de vue. Par exemple, la version de base et avancée de la même vue. Dans la version de base, vous venez de masquer certaines parties ou de présenter les informations de manière plus simple avec des fonctionnalités simplifiées. Dans ce cas, il est absolument correct d'avoir un modèle de vue pour ces deux vues car sinon vous devrez dupliquer la plupart du code du modèle de vue.

Le motif MVVM n'applique pas la relation unique entre la vue et le modèle d'affichage, mais dans la plupart des cas, c'est l'approche recommandée. Et si vous souhaitez avoir plusieurs vues pour un modèle de vue, vous devriez réfléchir avec soin avant d'aller ce chemin, car vous pourriez vous retrouver avec un modèle de vue qui a la moitié de ses membres utilisés par une vue et l'autre moitié par une autre.


0 commentaires

4
votes

Je pense qu'il n'y a pas de restriction de cela, cela dépend totalement de votre conception et de votre exigence. Vous pouvez créer plusieurs images pour une vue de vue unique pour présenter une représentation de l'UI différente.


1 commentaires

Cela suggère que la viewmodel doit être créée avant la vue, mais dans de nombreux exemples de votre vue, la vue est créée en premier. Dans Winforms à l'aide de Application.Run (New Mainform (Mainform ())) ne permet pas de créer d'abord le point de vue de la vue.



0
votes

Je suis effectivement utilisé le fait que cette relation individuelle n'est pas appliquée dans un projet.

Nous avions une alerte VM, et nous voulions les montrer dans une liste sur l'une de nos points de vue, mais également la pop up une notification lorsqu'il y a une nouvelle alarme et le faire dans l'écran principal. En définissant le contexte de données de la commande contextuelle sur les alarmes VM, nous pourrions facilement réaliser cette fonctionnalité.


0 commentaires