MVVM light – как получить доступ к собственности в другой модели просмотра

Я использую mvvm light для создания приложения Silverlight. Есть ли fragment кода, который показывает, как получить доступ к свойству или команде модели представления из другой модели представления или кода пользовательского элемента управления?

Я думаю, это просто, но я почему-то пропустил что-то.

Ueli

3 Solutions collect form web for “MVVM light – как получить доступ к собственности в другой модели просмотра”

Вы можете использовать Messenger для этого: отправить пользователя в UserViewModel:

Messenger.Send(userInstance); 

просто отправит пользователя всем, кого это интересует.

И зарегистрируйте получателя в CardViewModel:

 Messenger.Register(this, delegate(User curUser){_curUser = curUser;}); 

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

 Messenger.Send("Gimme user"); 

И реагируйте на это в UserViewModel:

 Messenger.Register(this, delegate(String msg) { if(msg == "Gimme user") Messenger.Send(userInstance); }); 

(Лучше использовать перечисление, а не строку в реальном сценарии :))

Перхабы вы можете даже ответить напрямую, но я не могу проверить это на данный момент.

Просто проверьте это: Mvvm light Messenger

Другой способ – использовать перегрузку RaisePropertyChanged, которая также транслирует изменение. Вы сделали бы это:

 RaisePropertyChanged(() => MyProperty, oldValue, newValue, true); 

Затем в подписчике:

 Messenger.Default.Register>(this, Handler); 

где T – тип MyProperty.

Cheers Laurent

Другой способ взглянуть на проблему состоит в том, чтобы иметь службу, которая возвращает «в настоящее время зарегистрированный пользователь».

В любом случае ответственность за обработку зарегистрированных пользователей больше зависит от службы, а ViewModels остаются простыми.

ViewModels должны существовать только для представления. Но, будучи хорошими гражданами, они также могут оказывать помощь другим ViewModels, например, Laurent и CodeWeasel.

  • Каким детерминированным является неточность с плавающей запятой?
  • Этот тип CollectionView не поддерживает изменения в SourceCollection из streamа, отличного от streamа Dispatcher
  • Разница между SelectedItem, SelectedValue и SelectedValuePath
  • ItemsControl с несколькими DataTemplates для viewmodel
  • WCF HttpTransport: stream с буферизацией TransferMode
  • Закройте приложение Windows Phone 7
  • Как программно установить выбранный элемент Panorama в WP7
  • Доступ к переменной codebehind в XAML
  • Недопустимая проблема с доступом к нескольким streamам
  • MVVM: привязка к модели при сохранении модели в синхронизации с версией сервера
  • Передача значения enums в качестве параметра команды из XAML
  • Давайте будем гением компьютера.