2009-11-17 2 views
2

Мы используем DataGrid WPF из набора инструментов WPF и используем MVVM. Я нахожу некоторые проблемы при использовании MultiSelect в MVVM и уверен, что я просто пропустил что-то простое. Я могу использовать «IsSelected» в ViewModel, чтобы получить событие при выборе строки в DataGrid. Это отлично подходит для одного выбора.WPF Toolkit DataGrid MultiSelect с MVVM

Если я установил «SelectionMode = Extended», я до сих пор получаю событие только при выборе первой строки в DataGrid.SelectionChanged в кодовом блоке получает каждое событие выбора, но я действительно хочу сделать эту работу в ViewModel. Вероятно, это простое решение для этого multiSelect, которое я просто пропустил. Я также попытался связать SelectedItems (множественное число) с коллекцией, чтобы получить все из них, но SelectedItems является readonly, поэтому он не может быть связан. Я был бы признателен за любые идеи о том, как это сделать, поскольку я не могу заставить этот метод перемещаться из кода в ViewModel.

ответ

2

Вы можете прослушивать событие SelectionChanged в файле кода и делегировать вызов ViewModel.

Шаблон M-V-VM не собирается уничтожать ВСЕ код из файла с кодом. Речь идет о разделении проблем - поместить логику взглядов в ViewModel и позволить представлению быть настолько глупым, насколько это возможно.

Если вас интересует конкретный пример, вы можете взглянуть на образец ViewModel WPF Application Framework (WAF).

Надеюсь, это поможет.

+0

Привет - Спасибо за ответ. Да, я знаю, что идея MVVM заключается не в том, чтобы полностью исключить код из кода, но я верю, что есть другие ответы на этот пример, которые не включают код в код позади. Возможно, решение - AttachedBehavior. Я все еще смотрю. –

+0

Я надеялся найти что-то лучшее, но не повезло. Я мог использовать MVVM Toolkit Light с Event To Command, но в итоге просто делегировал из SelectionChanged кода. Еще раз спасибо jbe! –

+0

У меня был успех с EventToCommand MVVM Light Toolkit в составе EventTrigger. Я видел образец Лорана Бугниона и нашел его чрезвычайно полезным: http://blog.galasoft.ch/archive/2009/12/17/silverlight-4-dragampdrop-with-eventtocommand.aspx По общему признанию, у меня нет использовал его в сценарии datagrid ... просто привязан к другим шаблонам данных. –