2009-11-20 10 views
17

Estoy reescribiendo mi aplicación basada en formularios de Windows y voy a usar WPF. La aplicación se basa en gran medida en las técnicas de arrastrar y soltar, en un entorno muy gráfico. El usuario utiliza informes de "Diseño", etc. al arrastrar elementos a una cuadrícula, moverlos, hacer clic con el botón derecho en los ajustes de las propiedades, etc., todo lo cual se guarda en una base de datos. También controle el flujo del programa dibujando diagramas de flujo, con enrutamiento y desición, todo dibujado en el formulario, y guarde de nuevo en una base de datos.Para MVVM o no para MVVM esa es la pregunta

MVVM se presta para este tipo de aplicación, o estoy tratando de colocar una clavija redonda en un agujero cuadrado.

Tus pensamientos son correctos.

Respuesta

24

Mi opinión es usar MVVM, pero no religiosamente.

Es decir, use un modelo para sus vistas, pero también use algún código detrás cuando sea necesario (arrastre & soltar, haga doble clic). Encuentre un equilibrio que ayude a su desarrollo, sin volverse loco.

+0

Gracias, creo que una mezcla está en orden. Intente seguir los principios de MVVM para Commands, Binding y manejo de bases de datos, pero tenga algún código para manejar la interacción más compleja de UI. – Tim

5

MVVM se presta muy bien a WPF. ¿Puedes arrastrar y soltar con WPF y MVVM? Seguro que puede. Intente buscar "WPF Drag Drop Behavior"

1

Si está buscando compatibilidad y capacidad de prueba de la aplicación a largo plazo, seguro que puede hacer eso con MVVM y WPF. o simplemente vaya con WPF. La curva inicial de aprendizaje de MMVM es muy pronunciada.

+0

Gracias, creo que una mezcla está en orden. Intente seguir los principios de MVVM para Commands, Binding y manejo de bases de datos, pero tenga algún código para manejar la interacción más compleja de UI. – Tim

3

Hay dos muy buenas razones para ir con MVVM:

  1. Se le ayuda a producir la lógica de negocio y el código de acceso de datos que es más fácilmente unidad de prueba
  2. Con muy poco esfuerzo adicional, todo de su UX debe ser fácil de modificar Blend

Como varios carteles metioned, cualquier concurso completo relacionado con el UX se puede manejar de código- detrás, pero debe exponer y acceder (leer y escribir) datos a través de sus Modelos de Vista para facilitar el enlace en sus Vistas.

En cuanto al esfuerzo extra al que me refería en el n. ° 2, podría agregar fácilmente una propiedad estática a su objeto de aplicación para determinar si la aplicación se está ejecutando frente a una vista que se abre en Blend. Si la Vista está abierta en Mezcla, aproveche los datos simulados en lugar de realizar llamadas de acceso a datos. Aquí hay un código de muestra que funciona para comprobar si Blend tiene una vista abierta:

if (Application.Current == null || Application.Current.GetType() == typeof(Application)) 
{ 
    isInDesignMode = true; 
} 
else 
{ 
    isInDesignMode = false; 
} 

Espero que esto ayude.

+0

Gracias por su respuesta. No estoy familiarizado con Blend. Los principios de Learning Blend, WPF y MVVM pueden ser una gran curva de aprendizaje. – Tim

0

Patrones como MVVM es hacer la vida más simple. Entonces, en cualquier caso, si siente que el patrón le está causando dificultades, siéntase libre de romperlo o de intentar algo más. Seguir ciegamente cualquier cosa no te ayudará. Pero, de todos modos, MVVM también admite interacciones de IU complejas como Arrastrar y soltar, creo que los comportamientos podrían ayudarlo en esto. Busque en Google comportamientos de omisión de arrastre WPF & y puede encontrar muchos tutoriales y códigos para ayudarlo en esto.