Actualmente estoy convirtiendo un pequeño proyecto de WPF a MVVM. Tengo un List<CustomObject>
en el ViewModel de la ventana principal a la que se une my ItemsControl y utiliza un DataTemplate para construir la UI de cada elemento. Mi código anterior usaba un controlador de eventos dentro de DataTemplate para manejar un evento de clic. Quiero utilizar algún tipo de enlace de comando para eliminar mis controladores de eventos de código subyacente, pero el DataContext de los elementos en mi ItemsControl es el objeto modelo, por lo que actualmente no puedo enlazar a ICommand desde ViewModel.WPF MVVM - Enlace de comandos dentro de ItemsControl
Entonces, supongo que hay un par de formas de atacar esto y no estoy seguro de cuál sería la forma más "MVVM" de hacerlo. ¿Vincularé ItemsControl.ItemsSource a una colección de una nueva clase ViewModel que represente cada elemento? ¿O utilizo UserControls en lugar de DataTemplate y luego puedo vincular cada UserControl a su propia instancia de un ViewModel que lo representa? ¿O hay algún tipo de expresión vinculante que pueda usar para referirme al DataContext de la ventana para tener acceso a enlazar al ViewModel (mientras escribo esto, suena mal así que estoy asumiendo un gran "NO" a esto idea)?
Además, lo que quiero vincular a mi comando es el evento LeftMouseButtonUp de un control de cuadrícula. No hay un "Comando" para una Grilla, así que estaba tratando de usar InputBindings. Podría usar un comando estático (como uno de los comandos de aplicación integrados), pero no podría usar una expresión vinculante para enlazar a una instancia de ICommand que es una propiedad de ViewModel porque MouseBinding.Command no es DependencyProperty.
Estoy bastante confundido sobre el tema del manejo de eventos en MVVM, por lo que se aprecia toda la información.