I am new in MVVM. I just learn this pattern and want to use it in my project. I am already understand working principle of this pattern and learned how to use Commands. But I have question how to handle events of another controls for example ListBox SelectionChanged event. ListBox haven't Command attribute
Часто в этом нет необходимости. Например, вы можете просто привязать свойство SelectedItem
ListBox
к свойству в вашей модели представления:
<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>
Это не только дает вам доступ к выбранному клиенту в вашем представлении. модель, он также позволяет вашей модели представления диктовать выбранному клиенту, задавая само свойство.
Есть и другие методы, позволяющие «избежать» прямой обработки событий в коде программной части. Например, привязанное поведение. Однако вам не следует бояться обработки событий напрямую, если код связан исключительно с представлением и упрощает ваш код.
Чтобы добавить атрибут команды к вашему элементу управления, он должен быть унаследован от ICommandSource. Посетите этот пост, чтобы узнать, как это достигается.
Приложение BookLibraray в составе WPF Application Framework (WAF) показывает, как прослушивать события WPF в разработанном приложении Model-View-ViewModel (MVVM). Это позволяет пользователю выбрать несколько книг, чтобы он мог удалить их все сразу. См. класс BookLibrary.Presentation.Views.BookView.