Как сделать так, чтобы целевые объекты сообщения были единственным получателем целевого сообщения?

Первый плакат.

Я использую MVVM-Light с Silverlight 4 и службами RIA. Это был познавательный опыт! Но пока работает прекрасно . Меня интересовали две вещи. Прямо сейчас я использую платформу Messenger для передачи EntityObjects обратно в ViewModel. Например, мне нужно открыть модель представления с конкретным объектом «Курс». Итак, я создаю экземпляр View, и View отправляет сообщение ViewModel с курсом. У меня пара вопросов.

Первый вопрос: это лучший способ сделать это? Я не хочу использовать Prism, Unity или что-то еще, потому что у меня нет времени на их изучение. (Это было для меня большая привлекательность MVVM Light. Часть Light.) Но я не видел другого способа передать параметры в VM Locator.

Вторая часть, это означает, что я отправляю сообщения из View в конкретную ViewModel этого View. Мои сообщения выглядят так:

  Tuple<Models.Course, Services.VWDS> courseDomainContextTuple = new Tuple<Models.Course, Services.VWDS>(Course, DomainContext);

  NotificationMessage<Tuple<Models.Course, Services.VWDS>> message = new NotificationMessage<Tuple<Models.Course, Services.VWDS>>(this, this.DataContext, courseDomainContextTuple, Models.MessageString.EditCourse);

  Messenger.Default.Send<NotificationMessage<Tuple<Models.Course, Services.VWDS>>>(message);  

Итак, как вы можете видеть, я объединяю Курс и DomainContext (Ах, RIA. Почему вы не позволяете мне получить Контекст из EntityObject?) И отправляю их в ViewModel (это «this.DataContext») - и да, я знаю, что должен создать класс для этого сообщения.

Вот проблема - это сообщение получает каждый объект, который получает Course и DomainContext, а не только виртуальная машина, которую я назначил Target.

Итак, второй вопрос: это намеренно или это ошибка , или я что-то не так делаю?

Спасибо!

1
задан BoB 21 September 2010 в 00:45
поделиться