Digamos que tengo una vista que está vinculada a ViewModel A que tiene una colección observable Clientes.¿Cómo se pueden usar los convertidores WPF en un patrón MVVM?
Una ventaja de este patrón MVVM es que también puedo vincular la Vista a ViewModel B que lo llena de datos diferentes.
Pero, ¿y si en mi Ver convertidores de conversión para mostrar a mis clientes, p. Tengo un "ContractToCustomerConverter" que acepta un Contrato y devuelve el Cliente adecuado para que se muestre.
El problema es que el convertidor existe fuera del patrón MVVM y, por lo tanto, no sabe que mi ViewModel tiene otra fuente para los clientes.
- hay una manera para la Ver para pasar el modelo de vista en el convertidor para que participe en el desacoplamiento de que el patrón MVVM ofrece?
- ¿Hay alguna forma de que de alguna manera incluya el convertidor en mi ViewModel para que el convertidor use las dependencias actuales que ViewModel tiene disponible?
- o son convertidores simplemente glorified code-behind y por lo tanto no se utiliza en el patrón MVVM, por lo que si está utilizando MVVM entonces simplemente crea sus propios "convertidores" (métodos en su clase ViewModel) que devuelven cosas como objetos de imagen , Objetos de Visibilidad, FlowDocuments, etc. para ser usados en la vista, en lugar de usar conversores en absoluto?
(me encontré con estas preguntas después de ver el uso de convertidores en la aplicación de demostración de WPF que viene con el MVVM Template Toolkit download, consulte la "Muestra Messenger" después de desempaquetarlo.)
OK Veo que su punto acerca de las vistas no debe compartirse entre diferentes máquinas virtuales, pero un ViewModel debe poder ser compartido por diferentes vistas, de ahí la ventaja de la capacidad de prueba de MVVM, ¿no? Debería poder conectar una vista simulada y un modelo simulado a ViewModel para asegurarse de que todas las combinaciones de datos que recibe del modelo simulado producen los valores de propiedad correctos que quedan expuestos a la vista. ¿Estarías de acuerdo? –