2010-06-28 7 views
0

Mon objectif était d'activer le ViewModel pour dire à la vue de présenter un MessageBox et poser une question à l'utilisateur.MVVM Light nécessite une référence à System.Windows dans mon ViewModel?

Je ne voulais pas que ViewModel fasse référence au code spécifique à Windows.

Je prends le temps de télécharger et d'installer MVVM Light Toolkit. Maintenant, je trouve que même avec le toolkit, il est nécessaire pour mon ViewModel de référencer System.Windows, afin de résoudre des choses comme MessageBoxButton et MessageBoxResult. Pourquoi faire tout ce travail supplémentaire, quand vous venez de vous retrouver avec un ViewModel qui fait référence à System.Windows? Je pourrais aussi bien appeler MessageBox.Show() directement depuis ViewModel. Essentiellement, je n'ai rien économisé en utilisant la boîte à outils MVVM, donc je ne comprends pas pourquoi je l'utiliserais.

Est-ce que quelqu'un peut m'expliquer, pourquoi passer par cet effort, si je dois encore référencer System.Windows dans mon ViewModel?

Merci, Hugh

+0

Test unitaire ... Si vous n'êtes pas un testeur MVVM, vous pouvez aussi bien utiliser des formulaires Windows standard. – mxmissile

Répondre

0

Lorsque vous utilisez la classe MessageBox, vous avez besoin d'une référence à System.Windows.Forms.dll. MVVM-Light ne nécessite PAS cette référence.

0

Cela ne va pas à l'encontre du but de la boîte à outils. La boîte à outils fournit un cadre léger pour séparer votre vue de votre modèle, ce qui est certainement utile avec les tests unitaires.

Ils ont réutilisé les énumérations, ils n'ont donc pas eu à les réécrire. Il semble vraiment un peu étrange de réutiliser les énumérations spécifiques à l'interface utilisateur, mais au moins, ce ne sont pas des gestionnaires d'événements et des arguments d'événement. Enfin, MVVM utilise des commandes, ce qui nécessite l'implémentation d'une interface . Cette interface est dans le PresentationCore et est encore plus spécifique à l'interface utilisateur :)

Dans l'ensemble, le but n'est pas de supprimer les références, c'est de ne pas utiliser ces références du mieux que vous pouvez et les énumérations ne cassent pas le motif.

0

La boîte à outils mvvm light est là pour vous aider à implémenter le modèle mvvm. La boîte à outils mvvm light a aussi l'avantage d'être miscible (quelques réglages sont faits pour vous, vous pouvez donc utiliser Expression Blend pour créer très facilement). Le modèle Mvvm aide également (comme d'autres l'ont dit) les tests de votre application car il est difficile de tester la vue, mais il est beaucoup plus facile de tester le viewModel.

Si vous voulez savoir pourquoi vous passez par cet effort et utiliser la lumière MVVM Je vous suggère de vérifier this related answer

Hope it helps et bonne chance!

Questions connexes