Prism CRM技术

时间:2012-05-22 16:34:55

标签: c# wpf prism unity-container composite

我们计划使用Prism.v4在WPF中开发轻量级CRM(客户,订单,资源等)应用程序。我们已经构建了一个类似于outlookbar的用户控件并使用了microsoft ribbon。存在其他区域,但这些是这种情况的基本区域。

此外,还存在一个包含所有模型,存储库,接口等的基础架构dll。

经过一番头脑风暴后,我们提出了以下事实:

customermodule无需了解ordersmodule(ordersmodule知道客户模型)。但我们希望用户能够加载属于特定客户的所有订单。因此,在客户详细模式(客户ribbontab和客户outlookbar项目被注入)中,我们希望带状按钮从“客户详细信息”导航到“此客户订单”。

问题是:如何在不破坏松耦合的情况下实现这一目标?

我们的方法:为customer-ribbontab提供一个区域,供其他模块与客户互动。因为订单模块明确地了解客户(基于我们的数据模型中的1:n关系)。

提前谢谢

1 个答案:

答案 0 :(得分:0)

我认为通常,Open客户的订单按钮应该来自客户模块,而不是订单模块。单击此按钮可以......

  • 使用/ ShowCustomerOrders?CustID = 1234之类的URI提升导航请求,订单模块会理解并选择
  • 打开包含名称类似于“CustomerOrders”的区域的视图,然后将客户ID插入区域上下文中。订单模块将使用视图发现注册其客户订单视图。

这些选项都不需要添加对OrderModule.dll的引用,因此不会添加耦合。但是,如果缺少Orders模块,则导航将不执行任何操作,或者视图将显示为空。

如果您想要避免在订单模块不存在时出现按钮,那么您可以通过视图发现将订单模块添加到客户功能区。然后,它必须从区域上下文中获取当前客户的客户ID,这将为其提供足够的信息,以便在单击时打开正确的客户订单视图。