Los pasos finales en el uso de MVVM para desacoplar GUI desde la lógica de negocio?

StackOverflow https://stackoverflow.com/questions/2060274

  •  20-09-2019
  •  | 
  •  

Pregunta

Recientemente, he aprendido acerca del uso de interfaces gráficas de usuario para desacoplar MVVM desde el modelo subyacente. Terminé aprendiendo tanto como pude convertir mi aplicación actual a MVVM, y fue un gran éxito. Ahora tengo que encontrar la manera de tomar realmente una interfaz gráfica generada en Blend y usarlo en lugar de mi GUI actual, que fue diseñado en Visual Studio. No puedo encontrar ningún recurso en la web para hacer esto lo más sencillo posible. Me gustaría saber lo que todos ustedes han hecho y han tenido trabajo por usted.

Mi última solución sería algo que me permitiera, en tiempo de ejecución, seleccione una piel de un menú e inmediatamente tener el cambio de interfaz gráfica de usuario de la actual a otro que el usuario selecciona. ¿Puede alguien me punto a mensajes que explican cómo hacer esto?

Mi objetivo actual es menos ambiciosa - Me gustaría ser capaz de añadir mi nueva interfaz gráfica de usuario se funden en mi proyecto de Visual Studio y cuando compilo, tienen aparezca la nueva interfaz gráfica de usuario de mezcla. Si quiero volver a la antigua interfaz gráfica de usuario, que tendría que volver a compilar. Por ahora, está bien.

Tengo mi proyecto Blend añadido a mi solución VS2008, y he puesto que era la aplicación de inicio. Eso funciona muy bien - si se me acaba la aplicación, mi nueva interfaz gráfica de usuario aparece en lugar de la antigua. El problema ahora es que necesita DLL que están realmente en una carpeta diferente - la carpeta bin \ Debug de la solicitud de inicio original. Se supone que voy a dejar a mi interfaz gráfica de usuario original como la aplicación de inicio, y luego tener su código subyacente App cargar la otra interfaz gráfica de usuario?

Además, cada una de las respectivas interfaces gráficas de usuario necesita una referencia al modelo de vista. En mi caso, sólo estaba instanciándola en mi clase de interfaz gráfica de usuario actual. Para la GUI Blend, que crea una instancia uno allí también, ya que sólo una de las interfaces gráficas de usuario estará activo. ¿Es aquí donde se debe utilizar algo así como el marco de la Unidad?

Lo siento por todas las preguntas posiblemente-incoherentes, pero no estoy muy seguro de cómo debía proceder desde aquí. Siento que estoy tan cerca de probar a mí mismo que MVVM es el camino a seguir desde el punto de vista interfaz gráfica de usuario (que ya estoy vendido en el bit de la capacidad de prueba).

¿Fue útil?

Solución 2

He encontrado un error, que en una parte de mi código que estaba usando la propiedad equivocada para llegar a la trayectoria de la asamblea actualmente en ejecución. Ahora estoy usando

System.Reflection.Assembly.GetExecutingAssembly().Location

A pesar de que esto hace el trabajo, sólo funciona si copio el exe de la carpeta bin \ Debug del proyecto de fusión en la carpeta bin \ Debug de mi principal de la aplicación. Voy a tener que vivir con esto mediante el uso de un evento posterior a la generación, supongo. Estaba tan mal estado durante los últimos meses trabajando con .NET, en el que no tengo que hacer esto (como antes en C ++), porque todos los ensamblados de referencia se copian automáticamente. Si quiero depurar cualquier código subyacente, también tengo que configurar el archivo ejecutable a partir de la configuración del proyecto de fusión, el cual es un inconveniente, así, especialmente cuando se trabaja en equipos diferentes, donde los caminos no están configurados de la misma. Cualquier sugerencia aquí también serán bienvenidos!

Otros consejos

Todos los ejemplos que he visto cambiar dinámicamente la apariencia interfaz gráfica de usuario mediante el uso de algún tipo de intercambio ResourceDictionary. Algunos enlaces:

diccionarios de recursos XAML de carga en tiempo de ejecución

WPF cambiar el tema / estilo en tiempo de ejecución

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top