Составные события в локально ограниченных областях с Призмой (CAL) - PullRequest
1 голос
/ 12 марта 2010

Я начинаю тренировать Prism (CAL) с небольшим приложением и столкнулся с некоторыми проблемами.

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

В настоящее время я ищу способ связи между представлениями (viewModels) внутри MainView. Сложные события могут это сделать, но когда я публикую эти события, они обрабатываются во всех экземплярах моего MainView, чего я действительно не хочу.

Есть ли способ вызвать «локально ограниченные» составные события, как в локально ограниченных областях? Или, может быть, в моем случае есть лучший способ связи между представлениями?

Ответы [ 3 ]

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

Также возможно создать EventAggregator с локальной областью и зарегистрироваться в дочернем UnityContainer, созданном в MainView (там же, где создается область с локальной областью).

Это эквивалентно локальным областям имхо.

0 голосов
/ 08 июня 2013

После долгих обсуждений был выбран EventAggregator.Совместное использование с другими в случае, если они находятся в той же ситуации, и наш мыслительный процесс мог бы помочь им:

(Постановка задачи: см. Мой предыдущий комментарий)

Основное представление (ViewModel) с регионамидля хранения представлений из других модулей, который также формирует представление TabItem, отвечает за очистку себя и дочерних представлений, которые он содержит.Следовательно, при событии закрытия TabItem это главное представление (ViewModel) должно информировать свои дочерние представления о постепенном отключении.

EventAggregator и .Net Eventing были тщательно изучены с разных сторон в качестве потенциального кандидата для отправки сообщения о завершении работы.

Поскольку в среде с разделением Prism основное представление технически не должно знать о своих дочерних представлениях, и наоборот, был выбран EventAggregator.

Одна проблема с агрегатором событий заключается в том, что он публикует события в целомприложения, но наше требование состояло в том, чтобы отфильтровать события, поступающие из закрытого tabitemview.EventAggregator был спроектирован так, чтобы использовать фильтр для проверки того, поступает ли запрос на отключение от одного и того же tabitemview (мы использовали регион-менеджер области действия для каждого tabItem, а этот менеджер области-области был использован в качестве фильтра) только тогда, когда он выполняет действие завершения работы.Это гарантирует, что отключение на одной вкладке не закроет дочерние представления на других вкладках с одинаковым именем региона.

Спасибо, RDV

0 голосов
/ 12 марта 2010

Передайте отправителю формы в качестве аргумента. (В любом случае, должен быть способ отличить окна вашего приложения - используйте его.) Когда вы получаете событие, проверьте, соответствует ли текущая форма ReferenceEquals отправителю (или проверьте форму «ключ»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...