2009-09-01 82 views
0

在复合WPF应用程序中,存储几个模块所需的全局变量的最佳方法是什么?例如,我正在研究一个应用程序,其中几个模块需要获取文件名,以便他们可以从文件中获取所需的数据。复合WPF:全局变量?

是否存在这样的复合WPF应用程序中存储信息的最佳做法?如何在保持松散耦合的同时将信息提供给我的模块?感谢您的帮助

大卫Veeneman
远见系统

回答

1

编写封装了服务您所需要的逻辑和封装到一个模块中的服务。然后让你的其他模块使用该服务来完成他们的工作。请注意,该服务可能会直接公开文件名,或者可能选择公开对基础文件进行操作的操作,而消费者不知道该文件。

1

创建一个接口,它负责返回“选定的文件名”。与大多数服务/依赖不同,它不会做很多处理 - 它只是负责返回一个值。使用依赖注入为所有需要它的地方提供此服务的实现者。

目前这个文件名似乎确实是全球性的,但想象你的应用程序必须从SDI转换到MDI。在您的复合应用程序中拥有真正的单身人士永远不是一个好主意。

+0

至于单身人士和MDI,你可以有一个应用程序打开一个“单一”文件和一个MDI接口。 Visual Studio解决方案是MDI环境中的单个文件。 – 2010-01-01 03:38:08

0

谢谢你的两个答案,两者看起来非常好。我想出了第三种方法,而外出我晨跑,我想我会尝试这一个:

我都加载在启动时在我的复合WPF应用程序模块并激活只有这样才能意见最初显示。所以,我的所有模块,即使是没有显示的模块,只要启动完成就可以使用。

当它们被初始化时,每个需要文件路径的模块都会订阅Prism事件聚合器中的FileOpened复合事件。从Shell打开文件时,Shell View Model将发布FileOpened复合事件。复合事件将携带文件路径作为其有效载荷。

因此,当Shell视图模型发布FileOpened事件时,每个模块中适当的回调方法将由Prism事件聚合器调用,并将filePath传递给每个模块的视图模型。