2010-08-24 2 views
8

Я новичок в MVVM. Я просто изучаю этот шаблон и хочу использовать его в своем проекте. Я уже понимаю принцип работы этого шаблона и узнал, как использовать Commands. Но у меня есть вопрос, как обрабатывать события других элементов управления, например ListBox SelectionChanged. ListBox не имеет атрибута командыКак обрабатывать события в MVVM

+1

Я не использовал его, но вы можете использовать CollectionView или CollectionViewSource, чтобы включить MVVM для различных типов элементов управления коллекцией. –

ответ

14

Вам часто не нужно. Например, вы можете просто связать SelectedItem свойство свойства ListBox «s на вашей модели представления:

<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/> 

Это не только даст вам доступ к выбранному клиенту в вашей модели представления, он также позволяет вашу модель представления диктовать выбранному клиенту, установив само свойство.

Есть и другие способы «избежать» прямой обработки событий в вашем коде. Например, приложенное поведение. Однако вы не должны бояться обработки событий напрямую, если код исключительно касается представления и делает ваш код более простым.

+0

Интересная идея. Например, я хочу обработать событие Mouse RightClick в DataGrid. В этом случае я должен написать обработчик в коде позади или должен использовать прикрепленное bahavior? – Polaris

+1

@ Polaris. посмотрите на рамки mvvm (cinch, mvvm light ...). вы найдете такие реализации, как EventToCommand Behavior, где вы можете привязывать события к командам. и, как сказал kent: не стесняйтесь использовать CodeBehing при кодировании, относящемся к подобным вещам :) например BringToView выделенного элемента в сетке или списке – blindmeis

+0

+1 для комментария о обработке событий, когда они влияют только на уровень представления. Так много людей забывают об этом ... –

0

Чтобы добавить атрибут команды в свой элемент управления, он должен наследовать от ICommandSource. Отметьте this сообщение, чтобы узнать, как это сделано.

0

BookLibraray применение WPF Application Framework (WAF) показывает, как слушать события WPF в Model-View-ViewModel (MVVM), сконструированные приложения. Он позволяет пользователю выбирать несколько книг, чтобы он мог сразу удалить их всех. См. Класс BookLibrary.Presentation.Views.BookView.

Смежные вопросы