2010-08-24 12 views
8

Soy nuevo en MVVM. Acabo de aprender este patrón y quiero usarlo en mi proyecto. Ya entiendo el principio de funcionamiento de este patrón y aprendí a usar Comandos. Pero me he preguntado cómo manejar los eventos de otros controles, por ejemplo, el evento ListBox SelectionChanged. ListBox no tiene el atributo de comandoCómo gestionar eventos en MVVM

+1

No lo he usado, pero es posible que pueda utilizar CollectionView o CollectionViewSource para habilitar MVVM en varios controles de tipo de colección. –

Respuesta

14

A menudo no es necesario. Por ejemplo, sólo puede obligar a la SelectedItem propiedad ListBox 's de una propiedad en su modelo de vista:

<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/> 

Esto no sólo le dan acceso al cliente seleccionado en su modelo de vista, sino que también permite que su modelo de vista dictar el cliente seleccionado estableciendo la propiedad en sí.

Existen otras técnicas para "evitar" el manejo directo de eventos en el código subyacente. Por ejemplo, comportamientos adjuntos. Sin embargo, no debe tener miedo de manejar eventos directamente si el código solo está relacionado con la vista y simplifica su código.

+0

Interesante idea. Por ejemplo, quiero manejar el evento Mouse RightClick en DataGrid. En este caso, ¿tengo que escribir handler en el código detrás o debo usar el comportamiento adjunto? – Polaris

+1

@ Polaris. mira los frameworks mvvm (cinch, mvvm light ...) por ahí. encontrará implementaciones como EventToCommand Behavior donde puede vincular eventos a comandos. y como dijo kent: siéntase libre de usar codebehing al codificar ver cosas relacionadas :) por ejemplo BringToView el elemento seleccionado en una grilla o cuadro de lista – blindmeis

+0

+1 para el comentario sobre el manejo de eventos cuando solo afectan la capa de vista. Mucha gente olvida esto ... –

0

Para agregar un atributo de comando a su control, debe heredar de ICommandSource. Revisa la publicación this, para ver cómo se logra.

0

El BookLibraray aplicación de la WPF Application Framework (WAF) muestra cómo escuchar a los eventos de WPF en un Modelo-Vista-ViewModel (MVVM) diseñado aplicación. Permite a un usuario seleccionar varios libros para que pueda eliminarlos todos a la vez. Ver clase BookLibrary.Presentation.Views.BookView.

Cuestiones relacionadas