2009-12-11 11 views
7

Estoy usando el patrón MVVM para una aplicación WPF. En varios lugares Ato comandos a los elementos de entrada en los puntos de vista como en el siguiente XAML:¿Cuál es la mejor práctica para manejar excepciones cuando se utiliza el enlace de comandos en WPF?

<Button Command="{Binding TheClickCommand}" >Click</> 

¿Cuál es la mejor práctica para el manejo de excepciones producidas cuando el comando se ejecuta en mi modelo de vista - es decir, ¿cuál es la mejor manera de informar a la vista que algo anda mal? ¿Puedo usar el patrón IDataErrorInfo o hay algún otro patrón incorporado para este escenario?

Respuesta

1

Odio esta respuesta, pero realmente depende de un contexto.

Hoy se me permite usar IoC, para conseguir ILoggerService o INotificationSerivce o ambos, y hacer las cosas cuando algo salió mal. Mañana puedo estar contento con raw MessageBox.Show() en algún lugar en el DispatcherUnhandledException controlador de eventos. O tal vez voy a escribir mi propia propiedad adjunta ala

<Button loc:Commanding.ExceptionAwareCommand="{loc:CommandExtension 
      Command={Binding TheClickCommand}, 
      FallBackCammand={Binding ErrorHandlerCommand}}" /> 

y vivir con ella ...

Probablemente, la respuesta puede ir así: "Elegir el mejor método para la comunicación entre dos clases y utilizarlo" . Perdón por no ser concreto ... Tal vez alguien más sea más específico.

NB: Los nombres de las interfaces, proporcionados en la respuesta no son WPF estándar. Los uso solo como un ejemplo.

Saludos

+0

Los nombres de interfaz pueden no ser un estándar, pero parecen estar surgiendo como una convención. –

+0

Aunque esperaba una respuesta más concreta, supongo que su respuesta es lo más cercana posible. Gracias :-) –

0

La respuesta más fácil es simplemente abrir un cuadro de mensaje. Un enfoque más sofisticado podría ser el uso de un servicio de notificación, que muestra el mensaje al usuario de una manera apropiada para su aplicación, pero puede ser burlado con un servicio falso para la prueba unitaria.

+0

Pero debo poner un incidente en mi modelo de vista y dejar que la opinión de escuchar a ese evento o lo que es la mejor manera? –

+0

No, a menos que la vista necesite proporcionar algún control especializado de errores. En su mayoría, querrá informar al usuario de cuál fue el error. El objetivo principal de los modelos de vista es eliminar la lógica de presentación de la vista. –

Cuestiones relacionadas