Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: SouthsouthОтветов: 2

У меня есть 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 об его экспорте.

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

viewmodelmvvmwpf

Ответы

Ответ 1 · Preet Sangha

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

Ответ 2 · Steve Greatrex

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы