как общаться между ViewModels

У меня есть TabControl с TabPage1 и TabPage2, в TabPage1 есть еще один TabControl1 с 2 элементами TabPage11 и TabPage12.
В TabPage2 есть еще один TabControl2 с 2 элементами TabPage21 и TabPage22.

Каждый элемент (TabPage11, TabPage12, TabPage21 и TabPage22) имеет свой собственный View (в форме UserControl) и ViewModel. в каждом View есть dataGrid.

Теперь я хочу реализовать функцию ExportToExcel для каждого dataGrid. Я могу поместить кнопку ExportToExcel на каждый элемент tabItem, но это выглядит не очень хорошо. Поэтому я помещаю одну кнопку в главное окно, поэтому, когда пользователь нажимает кнопку, dataGrid на выбранном tabItem обрабатывается.

Проблема в том, что кнопка в mainWindow не знает, как сообщить ViewModel выбранного tabItem об его экспорте.

Какие-либо предложения? Заранее спасибо! Стив


person Southsouth    schedule 04.04.2009    source источник


Ответы (2)


Основная функция должна сопоставлять информацию с контроллеров вкладок, и они должны сопоставлять информацию со своих контроллеров вложенных вкладок, если я вас правильно понимаю, что будет извлекать информацию из правильной модели представления.

person Preet Sangha    schedule 04.04.2009

Предполагая, что вы используете ICommand, привязанный к вашей кнопке экспорта, почему бы не указать параметр команды через привязку:

<Button Command="{Binding ExportToExcelCommand}" CommandParameter="{Binding SelectedItem, ElementName=MyTabControl}">Export</Button>

Выбранная вкладка затем будет передана в качестве параметра Execute методу команды.

person Steve Greatrex    schedule 29.07.2011