0

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

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

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

客户模块不需要知道订单模块(订单模块知道客户模型)。但我们希望 usercomfort 加载属于特定客户的所有订单。因此,在客户详细信息模式(客户功能区选项卡和客户前景栏项目被注入)中,我们想要一个功能区按钮从“客户详细信息”导航到“此客户订单”。

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

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

先感谢您

4

1 回答 1

0

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

  • 使用类似 /ShowCustomerOrders?CustID=1234 的 URI 发出导航请求,订单模块会理解并获取该请求
  • 打开一个包含名称如“CustomerOrders”的区域的视图,然后将客户 ID 插入到区域上下文中。Orders 模块将使用视图发现注册其客户订单视图。

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

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

于 2012-06-13T17:26:03.337 回答