我们计划使用Prism.v4在WPF中开发轻量级CRM(客户,订单,资源等)应用程序。我们已经构建了一个类似于outlookbar的用户控件并使用了microsoft ribbon。存在其他区域,但这些是这种情况的基本区域。
此外,还存在一个包含所有模型,存储库,接口等的基础架构dll。
经过一番头脑风暴后,我们提出了以下事实:
customermodule无需了解ordersmodule(ordersmodule知道客户模型)。但我们希望用户能够加载属于特定客户的所有订单。因此,在客户详细模式(客户ribbontab和客户outlookbar项目被注入)中,我们希望带状按钮从“客户详细信息”导航到“此客户订单”。
问题是:如何在不破坏松耦合的情况下实现这一目标?
我们的方法:为customer-ribbontab提供一个区域,供其他模块与客户互动。因为订单模块明确地了解客户(基于我们的数据模型中的1:n关系)。
提前谢谢
答案 0 :(得分:0)
我认为通常,Open客户的订单按钮应该来自客户模块,而不是订单模块。单击此按钮可以......
这些选项都不需要添加对OrderModule.dll的引用,因此不会添加耦合。但是,如果缺少Orders模块,则导航将不执行任何操作,或者视图将显示为空。
如果您想要避免在订单模块不存在时出现按钮,那么您可以通过视图发现将订单模块添加到客户功能区。然后,它必须从区域上下文中获取当前客户的客户ID,这将为其提供足够的信息,以便在单击时打开正确的客户订单视图。