¿Cuáles son sus estrategias para usar Expression Blend en aplicaciones WPF complejas y desacopladas?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

He estado haciendo aplicaciones WPF con el patrón MVVM usando Visual Studio, codificando C # y XAML principalmente a mano.

Ahora me he puesto al día con Expression Blend para poder hacer clic en las aplicaciones de WPF rápidamente con solo usar la GUI, lo cual es muy bueno, mucho más control del diseño que jugando con todos los elementos del XAML 80% de tu tiempo.

Pero parece que mis aplicaciones en Expression Blend son más simples y están necesariamente acopladas, usando eventos que se manejan en el código que está detrás, etc.

Me cuesta imaginar cómo pasaría de este enfoque más simple de Expression Blend a una aplicación MVVM desacoplada con Vistas, ViewModels, eventos enrutados y comandos, etc., aparte de llevar todo mi proyecto a Visual Studio y reorganizar Hasta el punto de que realmente ya no podía editarlo visualmente en Blend, pero volvería a usar Blend para crear pequeños trozos de XAML que pego en Visual Studio.

Para aquellos de ustedes que están trabajando con aplicaciones más complejas con Expression Blend, ¿cuáles son sus estrategias para mantener sus proyectos desacoplados de forma MVVM, pero al mismo tiempo estructurados en la forma de Expression Blend " (donde aún puede ver y editar partes enteras de su aplicación de una manera que tenga sentido visual) para que pueda continuar editándolas en la interfaz gráfica de Blend a medida que se escalan.

¿Fue útil?

Solución

He estado utilizando Blend ante todo como una herramienta de creación rápida de prototipos. Para este propósito, me gusta mucho. En particular, me resulta muy útil cuando no estoy seguro de cómo configurar las cosas para obtener el diseño / comportamiento que quiero.

Rara vez edito mis archivos de proyecto principal directamente en Blend. Encuentro que crea un marcado que es innecesariamente complejo o detallado. Además, a medida que me familiarizo con WPF / XAML, me encuentro usando Blend cada vez menos.

Otros consejos

He estado utilizando Blend para la interfaz de usuario de mis proyectos desde la versión 1. Dado que mi objetivo es integrar completamente al diseñador en el proyecto, he analizado todo lo que se interpone en el camino hacia este objetivo. Aunque no estaba al tanto de MVVM por algún tiempo, naturalmente llegué a la misma conclusión, y he estado haciendo ViewModels sin saber que había un patrón para ellos. Ahora, con la ayuda de otros que están trabajando para MVVM, está mejorando todo el tiempo. Ahora he desarrollado 3 aplicaciones con una interfaz de usuario enriquecida y funcionalidad donde toda la interfaz de usuario se realizó en Blend. Lea el artículo de Josh Smith en MSDN, observe el trabajo de Jason Dolinger y el trabajo de Karl Shifflett para mencionar solo algunos.

Observe atentamente el uso de ICommand, INotifyPropertyChanged, ObservableCollections.

También, busque cómo puede manipular los controles desde su ViewModel. Como ejemplo, hay ICollectionView. Supongamos que tiene una lista de animales y un conjunto de tipos por los que desea filtrarlos (aves, mamíferos, etc.)

Al usar ICommand e ICollectionView, podrías exponer suficiente control donde un diseñador podría construir un cuadro de lista para mostrar los animales y un menú para mostrar la lista de filtros. ICollectionView tiene suficiente funcionalidad para saber qué es la selección actual, y si tenía comandos basados ??en ICommand para " SortByBird " ;, " SortByMammal " ;, etc, entonces cuando el diseñador hizo el menú, (asumiendo que el contexto de la ventana era su ViewModel para esta ventana) le brindaría al diseñador las opciones adecuadas para enlazar.

Actualmente estoy trabajando con otro equipo de mi empresa para explicar cómo se han configurado mis proyectos y están respondiendo positivamente a la nueva función del diseñador que utiliza Blend.

No he podido usar correctamente Blend end to end para eso.

En el caso general, es más rápido editar xaml a mano en VS (la excepción incluiría cualquier cosa con pinceles no estándar, por ejemplo). Blend es muy feliz con los clics, y no es realmente rápido para rematar.

Otra área donde Blend es realmente útil es crear estilos / plantillas a partir de controles existentes.

Aparte de eso, no estoy vendido todavía. Sus capacidades disminuyen cuando se utilizan las operaciones de datos de instancia de código, por lo que no sirve de ayuda y tiende a generar un marcado inútil, tamaños estáticos y demás, que realmente no me gustan.

Blend es genial para darte una idea de cómo se pueden hacer las cosas, pero el xaml que produce es terrible y está muy unido. A medida que aprendas mejor el lado xaml de las cosas, encontrarás que es mucho más rápido simplemente escribir el xaml que usar Blend. Hasta que llegue a ese punto, puede realizar cambios en Blend, pero luego debe refactorizar el xaml que crea para que esté menos acoplado y eliminar los elementos extraños de la interfaz de usuario.

Llego un poco tarde a esta fiesta, pero espero que alguien todavía pueda responder. Todavía no he encontrado un resultado de búsqueda que describa el proceso para dibujar una línea entre el diseñador y el programador. La primera parte es MVVM, por lo que no hay ningún acoplamiento entre la GUI y la "lógica de negocios" subyacente, y estoy trabajando duro para aprender eso ahora mismo. La otra parte sobre la que no he visto a nadie escribir es sobre cómo diseñar un proyecto en Blend para que el desarrollador básicamente pueda proporcionarle una DLL de GUI, y luego la GUI de su aplicación cambie mágicamente.

Esto es lo que estoy buscando: el desarrollador escribe su código como de costumbre y también escribe una GUI muy básica que prueba que todo funciona como se esperaba. Mientras tanto, el diseñador está creando su pequeña e interesante GUI con todas las características de usabilidad que la gente espera. Ahora, el desarrollador puede ejecutar su aplicación con su GUI, pero también puede cambiar a la GUI del diseñador sobre la marcha.

Supongo que si no se puede hacer sobre la marcha, ¿significa eso en el caso ideal que el desarrollador tenga su solución VS que incluya el XAML de la solución Blend? Luego, en App.xaml, ¿solo hace referencia a un archivo de inicio diferente?

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