2009-08-11 12 views
9

Estoy trabajando en una aplicación WPF MVVM. Lo que estoy notando es que tengo que escribir una cantidad desorbitada de código repetitivo solo para declarar comandos (a través de DelegateCommands del MVVM Toolkit del Equipo WPF), propiedades adjuntas y comportamientos adjuntos. ¿Hay alguna estrategia disponible para reducir la cantidad de código repetitivo que tengo que escribir?¿Está reduciendo el código repetitivo en la aplicación MVVM WPF para las propiedades adjuntas, comandos, etc.?

Gracias!

+1

Danos un ejemplo de algo que consideras "repetitivo". La repetición de un hombre es la lógica de negocios de otro hombre. –

+0

Uso fragmentos para crearlos. Los fragmentos crean # regiones para que no tenga que mirarlo todo. –

Respuesta

9

Personalmente, me gusta Josh Smith's MVVM Foundation library. Utiliza una clase llamada RelayCommand allí, pero suena bastante similar a su DelegateCommand del kit de herramientas. Le permite crear un comando y pasar el CanExecute y Ejecutar la lógica mediante expresiones lambda. Eso ayudará a reducir un montón de código repetitivo.

En his blog, Josh también habla sobre el uso de un observador de propiedades genérico para evitar algunos de los aspectos más complicados del manejo de eventos PropertyChanged. Eso también vale la pena investigar.

Honestamente, sin embargo, una gran parte del código llamado "repetitivo" es la creación de una base muy dinámico y flexible para su aplicación. Si está haciendo una aplicación pequeña y fácil de mantener, puede preguntarse: "¿Necesito aplicar el patrón MVVM aquí?" Si, por otro lado, está haciendo una aplicación más grande que tendrá una larga vida útil y requiere mucho mantenimiento, entonces este código repetitivo lo va a salvar más adelante.

+2

Enlace al artículo del blog: https://joshsmithonwpf.wordpress.com/2009/07/11/one-way-to-avoid-messy-propertychanged-event-handling/ –

1

La estrategia más obvia que se me ocurre es utilizar fragmentos de código y/o plantillas de archivos. No reduce las líneas de códigos, pero al menos te permite ahorrar tiempo.

Puede hacerlas usted mismo (o encuentre algunas que puede importar directamente a su Visual Studio).

Yo personalmente uso el kit de herramientas de luz MVVM de Laurent Bugnion y utilizar sus plantillas de código-fragmentos/archivo, me ahorran mucho tiempo. Asumiría que hay algo similar para la mayoría de los kits de herramientas populares de mvvm.

Espero que ayude!

1

me pareció que estaba escribiendo un montón de código para implementar notificación de cambio a través de la interfaz INotifyPropertyChanged. Para reducir esto, encontré un paquete NuGet llamado PropertyChanged.Fody que hace que agregar INotifyPropertyChanged a las propiedades de una clase sea realmente simple.

Así es cómo usarlo;

using PropertyChanged; 

[ImplementPropertyChanged] 
public partial class Order 
{ 
} 

Ahora cualquier propiedad pública en la clase tendrá una notificación de cambio de propiedad. Esto es particularmente útil para las clases EF generadas a través de DB primero, donde no tiene control total sobre sus entidades.

Ver GitHub para más información.

Cuestiones relacionadas