Pregunta

Creé una aplicación usando el WPF de Microsoft. Principalmente maneja la lectura de datos y la entrada, así como la asociación de las relaciones entre datos dentro de parámetros específicos.

Como principiante total, tomé una mala decisión de diseño (no tantas decisiones como usar lo primero que llegué a trabajar), pero ahora entendiendo mejor WPF, estoy obteniendo la necesidad de refactorizar mi código con mejores principios de diseño.

Tuve varios problemas, pero supongo que cada uno merece su propia pregunta para la claridad. Aquí estoy pido formas adecuadas de manejar los datos en sí. En el original, envolví cada fila en un objeto cuando se obtuve de la base de datos (usando LINQ a SQL) algo así como el registro activo simplemente no activo o la persistencia (cada instancia de la aplicación tenía su propia parte de manejo de datos).

La aplicación tiene subunidades que manejan diferentes aspectos. Sin embargo, como se configuró, cargó todo cuando se inició. Esto crea varios problemas, por ejemplo, a menudo no sería necesario cargar una parte a menos que íbamos a trabajar específicamente con esa parte, por lo que no soy una forma de carga perezosa. También hubo un problema con la persistencia interna porque podría crear un nuevo objeto/fila en un aspecto y tal vez establecer una relación entre él y el objeto diferente, pero el nuevo objeto no aparecería hasta que se reinicie el programa.

La persistencia entre las instancias de la aplicación no será un gran problema debido a la pequeña cantidad de personas que usan el programa.

Si bien podría resolver esto ahora usando trucos sucios, prefiero refactorizar el programa y hacerlo elegantemente, ahora la pregunta es cómo. Sé que hay varias formas y algunas vienen a la mente:

1) Cada aspecto del programa es su propio UserControl lo que se vuelve a cargar/instarse cada vez que navegas a él. Esto asegura que solo cargue los datos que necesita y obtiene algo de persistencia. El servidor DB ubicado en la misma LAN y las tablas son pequeños, por lo que no debería ser un gran problema. El inconveniente menor es que tendría que recordar el estado de cada aspecto para que no siempre comience en principiantes.

2) Tener un objeto de tipo ViewModel en el nivel base de la aplicación con carga perezosa y algún tipo de tiempo de espera. Luego presagiaría este objeto por el árbol visual para asegurarse de que cada aspecto obtenga sus datos de la misma instancia.

3) Capa de datos de registro semi activo con métodos de carga estática.

4) alguna otra idea

¿Cuál es la forma más práctica de WPF, qué supone MVVM?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
scroll top