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

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

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

Ueli

Вы можете использовать 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.

  • Работа с данными в текстовом блоке в Silverlight / WP7
  • Создание Silverlight DataTemplate в коде
  • Недопустимая проблема с доступом к нескольким streamам
  • Как автоматически выбрать весь текст в фокусе в WPF TextBox?
  • Как использовать ScrollViewer.ScrollToVerticalOffset?
  • Стиль ошибки проверки в WPF, аналогичный Silverlight
  • Как программно установить выбранный элемент Panorama в WP7
  • WPF vs Silverlight
  • Доступ к ресурсам
  • Обработка изображений на стороне клиента
  • MVVM: привязка к модели при сохранении модели в синхронизации с версией сервера
  • Interesting Posts

    Инъекция зависимостей в Struts2 Доступ к фазам с включенным сеансом

    Отображать неопределенный JProgressBar при запуске командного файла

    Выбор правильных верхних и нижних границ HSV для определения цвета с помощью `cv :: inRange` (OpenCV)

    Отображение цветовых профилей после обновления до Windows 8.1

    Отсутствует артефакт com.sun: tools: jar

    Почему простая программа Hello World не скомпилирована с Turbo C ++?

    Чтение / запись в файл с помощью jQuery

    Perl 5.20 и судьба умного соответствия и заданного-когда?

    Почему C ++ STL не предоставляет никаких «древовидных» контейнеров?

    Полезный бесплатный редактор файлов ISO, который работает в Windows?

    Как выбрать элемент из выпадающего списка с помощью Selenium WebDriver с java?

    Как получить второе возвращаемое значение из функции без использования временных переменных?

    Wix генерирует одиночный идентификатор компонента для всего дерева

    Использовать runas с учетной записью домена на машине без домена в Windows 2k / XP / Vista / 7

    Разница между Console.Read () и Console.ReadLine ()?

    Давайте будем гением компьютера.