Я новичок в MVVM. Я просто изучаю этот шаблон и хочу использовать его в своем проекте. Я уже понимаю принцип работы этого шаблона и узнал, как использовать Commands. Но у меня есть вопрос, как обрабатывать события других элементов управления, например ListBox SelectionChanged. ListBox не имеет атрибута командыКак обрабатывать события в MVVM
ответ
Вам часто не нужно. Например, вы можете просто связать SelectedItem
свойство свойства ListBox
«s на вашей модели представления:
<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>
Это не только даст вам доступ к выбранному клиенту в вашей модели представления, он также позволяет вашу модель представления диктовать выбранному клиенту, установив само свойство.
Есть и другие способы «избежать» прямой обработки событий в вашем коде. Например, приложенное поведение. Однако вы не должны бояться обработки событий напрямую, если код исключительно касается представления и делает ваш код более простым.
Интересная идея. Например, я хочу обработать событие Mouse RightClick в DataGrid. В этом случае я должен написать обработчик в коде позади или должен использовать прикрепленное bahavior? – Polaris
@ Polaris. посмотрите на рамки mvvm (cinch, mvvm light ...). вы найдете такие реализации, как EventToCommand Behavior, где вы можете привязывать события к командам. и, как сказал kent: не стесняйтесь использовать CodeBehing при кодировании, относящемся к подобным вещам :) например BringToView выделенного элемента в сетке или списке – blindmeis
+1 для комментария о обработке событий, когда они влияют только на уровень представления. Так много людей забывают об этом ... –
Чтобы добавить атрибут команды в свой элемент управления, он должен наследовать от ICommandSource. Отметьте this сообщение, чтобы узнать, как это сделано.
BookLibraray применение WPF Application Framework (WAF) показывает, как слушать события WPF в Model-View-ViewModel (MVVM), сконструированные приложения. Он позволяет пользователю выбирать несколько книг, чтобы он мог сразу удалить их всех. См. Класс BookLibrary.Presentation.Views.BookView.
- 1. Как обрабатывать события UserControl
- 2. Как лучше обрабатывать события
- 3. Как обрабатывать события цепь
- 4. Как обрабатывать пользовательские события?
- 5. Как обрабатывать событие `ScrollViewer.ScrollChanged` в MVVM?
- 6. MVVM и события
- 7. Захват события MVVM
- 8. WPF MVVM Маршрутизированные события
- 9. Как обрабатывать событие SelectionChanged из ComboBox с MVVM в wpf?
- 10. Как обрабатывать событие щелчка заголовка в DataGrid в контексте MVVM?
- 11. MVVM wpf TreeView как обрабатывать Расширенное событие
- 12. MVVM: Как обрабатывать взаимодействие между вложенными ViewModels?
- 13. Как обрабатывать два разных события
- 14. Как обрабатывать события закрытия формы
- 15. Как обрабатывать события на QThread?
- 16. seccomp Как обрабатывать события ptrace
- 17. Как обрабатывать Кендо UI MVVM Дата Picker
- 18. Как обрабатывать события выбора с WrapPanel
- 19. Как обрабатывать два события mouses
- 20. Как обрабатывать COM-события regfree?
- 21. Как обрабатывать события касания IE10?
- 22. Wpf MVVM Как обрабатывать TextBox «вставить событие» в ViewModel
- 23. Где размещать события при использовании MVVM?
- 24. MVVM и Prism - Как обрабатывать события TextBox_DragEnter и TextBox_Drop в ViewModel
- 25. Программно обрабатывать события какао?
- 26. динамически обрабатывать события jquery
- 27. обрабатывать события в короне lua
- 28. обрабатывать события управления динамически
- 29. Как правильно обрабатывать событие закрытия окна в wpf MVVM
- 30. Невозможно обрабатывать события в ASP.net
Я не использовал его, но вы можете использовать CollectionView или CollectionViewSource, чтобы включить MVVM для различных типов элементов управления коллекцией. –