使用PRISM处理导航的最佳方法是什么?

时间:2010-03-11 21:18:10

标签: .net wpf navigation prism

使用Prism - 在WPF应用程序中处理导航的最佳方法是什么?你怎么申请这个?有没有最佳做法?

在我的应用程序中,我目前正在使用Event Aggregation。任何应导致程序导航的菜单项或其他项目都将发布一个事件,负责打开已发布事件所代表的视图的模块将这样做。这很好用,但我觉得这不是处理Prism导航的最佳方法。是吗?

1 个答案:

答案 0 :(得分:3)

这是一种与其他方法一样好的方法,至少在Prism方面如此。我以前做过的一种方法是将一个模块/类设置为“导航代理”;对于MDI类型的应用程序,我通常称它为WindowManager,因为缺乏创造力。这个人将注入IRegionManager和IEventAggregator并开始侦听任何“新窗口”或“导航到”类型的事件并适当地更改/创建区域。如果你想变得有点聪明,你可以开始使用范围的RegionManagers:

http://msdn.microsoft.com/en-us/library/cc707903.aspx

http://blogs.msdn.com/erwinvandervalk/archive/2009/04/29/how-to-build-an-outlook-style-application-with-prism-v2-part-2.aspx

此策略的主要问题(并且通常使用事件聚合方面)是您需要由多个模块处理的任何CompositePresentationEvents或至少在raise模块的“外部”处理,您需要在公共位置声明(我通常将它们放在一个名为Infrastructure的项目中)。我不是太喜欢这个。