Как обрабатывать One View с несколькими ViewModel и запускать разные команды? - PullRequest
1 голос
/ 11 марта 2010

У меня есть senario, в котором один вид и вид имеют привязку с несколькими ViewModel.

Например. Один вид с отображением сведений о телефоне и ViewModel, как показано ниже:

  • Основные функции телефона - PhoneViewModel,
  • Подробности о цене телефона - PhoneSubscriptionViewModel,
  • Аксессуары для телефона - PhoneAccessoryViewModel
  • Для общих свойств - PhoneDetailViewModel

Я поместил общие свойства View в PhoneViewModel. Теперь senario выглядит следующим образом:

По умолчанию View отображает функции Phone Basic, которые связаны с ObservationCollection of PhoneViewModel . В моем представлении есть кнопка - 'Просмотреть аксессуары' , при нажатии этой кнопки на одном всплывающем экране - в моем дизайне у меня есть отображение / скрытие сетки и привязка к ней с помощью ObservationCollection of PhoneAccessoryViewModel .

Теперь проблема начинается - список аксессуаров также имеет кнопку «View Detail», при нажатии на которую я должен открыть одно всплывающее окно, здесь я также поместил одну Grid и Visible / Hide. Я привязал команду «ViewAccessoryDetailCommand» к кнопке «View Detail». А при выполнении команды одна функция запускается и устанавливает свойство, которое Visible the Popup screen.

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

Резюме: One View -> ViewModel1 -> Grid Bind view ViewModel2 -> Grid Have Button и Onclick отображают новую Grid, которая связана с командой ViewModel3-this, запускается, но свойство не возникает.

Я думаю, что в моей методологии есть какая-то проблема. Пожалуйста, дайте ваши предложения.

Ответы [ 2 ]

1 голос
/ 13 марта 2010

Я не уверен, что полностью понимаю, что вы пытаетесь спросить, но я попробую ответить.Я вчера отправил ответ (возможно) на аналогичный вопрос.

См.

Запрос шаблона MVVM в WPF?

и

MVVM - какой идеальный способ для пользовательских контроллеров общаться друг с другом

Я не уверен, что так, но надеюсь, что это поможет.

1 голос
/ 13 марта 2010

В WPF View подключается к ViewModel путем установки DataContext для View в ViewModel .

Поскольку каждый элемент управления может иметь только один DataContext a View может иметь только одну ViewModel .

...