Мы планируем разработать легкое приложение CRM (клиенты, заказы, ресурсы и т. Д.) В WPF с Prism.v4. Мы уже создали пользовательский контроль, похожий на внешний вид, и используем ленты microsoft. Существуют дополнительные области, но они являются существенными для этого сценария.Призмы CRM методы
Кроме того, существует DLL инфраструктуры со всеми моделями, репозиториев, интерфейсы и т.д. и т.п.
После долгих размышлений мы пришли к следующему факту:
customermodule не нужно ничего знать о ordersmodule (ordermodule знает модели клиентов). Но мы хотим, чтобы пользовательский пакет загружал все заказы, принадлежащие конкретному клиенту. Таким образом, в режиме customer-detail-mode (клиентские элементы ribbontab и customer outlookbar вводятся), мы хотим, чтобы ленточная кнопка переходила от «детали клиента» к «этим заказам клиентов».
Вопрос в том, как достичь этого, не нарушая ослабление сцепления?
Наш подход: предоставление клиенту-ribbontab региона для взаимодействия других модулей с клиентами. Потому что модуль заказа defenitively знает о клиенте (основанный на соотношении 1: n от нашего datamodel).
Спасибо заранее
Возможно, я немного устал сегодня, и я не знаю, нужна ли вам это, но вы можете захотеть прочитать [PRISM Navigation] (http://msdn.microsoft.com/en-us /library/gg430861%28v=pandp.40%29.aspx), если вы еще этого не сделали :) –
Это не совсем то, что я ищу. Моя навигация работает нормально. То, что я хочу достичь, - это взаимодействие внутри контактного модуля с порядковым модулем, в то время как контактный модуль ничего не знает о заказах. – csteinmueller
Точка вашей свободной связи - это то, что вы можете ее протестировать. Это не тот случай, когда у вас есть ссылка с помощью OrderModule.dll. Таким образом, вы можете просто добавить дополнительное свойство 'List Orders' и использовать его для своих заказов этого конкретного клиента. Если ваш заказ когда-либо существует в ordermodule, то вы делаете это неправильно. Поскольку он является частью вашего «уровня домена», он должен быть широким, чтобы вы могли его повторно использовать. Таким образом, вы помещаете эти модели/объекты в отдельную dll, например ApplicationName.Domain –