WPF MVVM - Powiązanie poleceń wewnątrz elementu ItemsControl

Obecnie konwertuję mały projekt WPF do MVVM. mamList<CustomObject> w ViewModel głównego okna, z którym mój ItemsControl wiąże się i używa DataTemplate do zbudowania interfejsu użytkownika każdego elementu. Mój stary kod używał modułu obsługi zdarzeń wewnątrz DataTemplate do obsługi zdarzenia click. Chcę użyć pewnego rodzaju powiązania poleceń, aby wyeliminować moje procedury obsługi zdarzeń za kodem, ale DataContext elementów w moim ItemsControl jest obiektem modelu, więc nie mogę obecnie powiązać z ICommandem z ViewModel.

Sądzę, że istnieje kilka sposobów na zaatakowanie tego i nie jestem pewien, który z nich byłby najbardziej „MVVM” sposobem na to. Czy należy powiązać ItemsControl.ItemsSource z kolekcją nowej klasy ViewModel, która reprezentuje każdy element? Czy mogę użyć UserControls zamiast DataTemplate, a następnie mogę powiązać każdy UserControl do jego własnej instancji ViewModel, który reprezentuje to? Czy też istnieje jakiś rodzaj wyrażenia wiążącego, którego mogę użyć, aby odwołać się do DataContext okna, aby mieć dostęp do powiązania z ViewModelem (kiedy to piszę, brzmi to po prostu źle, więc zakładam duże „NIE”) pomysł)?

Ponadto moim zadaniem do powiązania jest zdarzenie LeftMouseButtonUp kontrolki Grid. Nie ma „polecenia” dla siatki, więc próbowałem użyć powiązań wejściowych. Mogłem użyć komendy statycznej (takiej jak jedna z wbudowanych w ApplicationCommands), ale nie mogłem użyć wyrażenia powiązania do powiązania z instancją ICommand, która jest własnością ViewModel, ponieważ MouseBinding.Command nie jest właściwością DependencyProperty.

Jestem dość zdezorientowany na temat obsługi zdarzeń w MVVM, więc wszelkie informacje są mile widziane.

questionAnswers(3)

yourAnswerToTheQuestion