WPF MVVM - Ligação de Comando dentro de um ItemsControl
Atualmente estou convertendo um pequeno projeto WPF para MVVM. eu tenho umList<CustomObject>
no ViewModel da janela principal que meu ItemsControl se liga e usa um DataTemplate para construir a interface do usuário de cada elemento. Meu código antigo usava um manipulador de eventos dentro do DataTemplate para manipular um evento de clique. Eu quero usar algum tipo de ligação de comando para eliminar meus manipuladores de eventos code-behind, mas o DataContext dos itens no meu ItemsControl é o objeto de modelo, portanto, não posso vincular a um ICommand do ViewModel.
Então, eu acho que existem algumas maneiras de atacar isso e não tenho certeza qual seria a maneira mais "MVVM" de fazê-lo. Vincular o ItemsControl.ItemsSource a uma coleção de uma nova classe ViewModel que representa cada item? Ou eu uso UserControls em vez de um DataTemplate e então posso vincular cada UserControl a sua própria instância de um ViewModel que o representa? Ou há algum tipo de expressão de ligação que eu possa usar para se referir ao DataContext da janela para ter acesso ao bindModel (enquanto eu digito isso, isso soa mal, então estou assumindo um grande "NÃO" para isso idéia)?
Além disso, o que eu quero ligar meu comando é o evento LeftMouseButtonUp de um controle de grade. Não há "Comando" para uma grade, então eu estava tentando usar InputBindings. Eu poderia usar um comando estático (como um dos ApplicationCommands internos), mas eu não poderia usar uma expressão de ligação para ligar a uma instância ICommand que é uma propriedade do ViewModel porque MouseBinding.Command não é um DependencyProperty.
Estou muito confuso sobre o assunto de manipulação de eventos no MVVM, portanto, toda e qualquer informação é apreciada.