2010-02-10 20 views
1

Si l'on met en œuvre une application WPF utilisant le modèle de conception MVVM, est-il possible d'utiliser des convertisseurs de valeur? Il me semble que les convertisseurs de valeurs font exactement la même chose que le modèle de vue, qui prépare les données pour la vue. Donc, y a-t-il de bonnes utilisations pour les convertisseurs de valeur?Quand utiliser des convertisseurs de valeur dans une application mvvm?

Cordialement
Oliver Hanappi

+0

Jamais. [Pensée: MVVM élimine 99% du besoin de ValueConverters] (http://groups.google.com/group/wpf-disciples/browse_thread/thread/3fe270cd107f184f?pli=1) – Giorgi

+0

@Giorgi Devinant c'est un peu en retard, mais exclure ValueConverters parce qu'ils peuvent facilement être implémentés dans le code est une mauvaise pratique. L'un des principes les plus fondamentaux: ** "Le code devrait être ouvert pour extension, mais fermé pour modification" **, , ce qui est évidemment ce que ValueConverters résout très bien. – helmesjo

Répondre

8

Les convertisseurs de valeur sont à portée de main pour traduire les états logiques dans des états visuels qui ne sont pertinentes pour l'interface utilisateur. Un convertisseur BooleanToVisibility, par exemple, a sa place dans une application MVVM.

Cependant, je ne recommanderais jamais d'utiliser des convertisseurs pour effectuer une conversion complexe avec divers paramètres d'entrée ou pour appeler n'importe quelle logique métier dans leur implémentation. C'est un truc de VM.

+0

Vous ne devriez pas utiliser un convertisseur de valeur pour quelque chose comme une conversion Bool-Visibility non plus. La meilleure solution consiste à utiliser un style avec une liaison DataTrigger directement à la variable dans XAML et à utiliser un Setter pour la visibilité. – mDC

6

Cette question me préoccupe beaucoup, car j'ai écrit un tas de convertisseurs de valeur pour mon projet avant de réaliser que je pouvais faire tout cela dans mon modèle de vue. Je les utilise toujours - je ne les référence pas à partir de XAML; mon modèle de vue les appelle explicitement. Il est en fait utile de découpler la conversion de valeurs du modèle de vue, même si vous n'allez pas appeler les convertisseurs de valeurs de XAML, et simplement les appeler à partir du modèle de vue. Il rend la logique de conversion de valeur plus facile à tester, plus réutilisable et composable. J'utilise même des convertisseurs de valeur dans la couche d'accès aux données de mon modèle sans effet négatif apparent.