使用Prism - 在WPF应用程序中处理导航的最佳方法是什么?你怎么申请这个?有没有最佳做法?
在我的应用程序中,我目前正在使用Event Aggregation。任何应导致程序导航的菜单项或其他项目都将发布一个事件,负责打开已发布事件所代表的视图的模块将这样做。这很好用,但我觉得这不是处理Prism导航的最佳方法。是吗?
答案 0 :(得分:3)
这是一种与其他方法一样好的方法,至少在Prism方面如此。我以前做过的一种方法是将一个模块/类设置为“导航代理”;对于MDI类型的应用程序,我通常称它为WindowManager,因为缺乏创造力。这个人将注入IRegionManager和IEventAggregator并开始侦听任何“新窗口”或“导航到”类型的事件并适当地更改/创建区域。如果你想变得有点聪明,你可以开始使用范围的RegionManagers:
http://msdn.microsoft.com/en-us/library/cc707903.aspx
此策略的主要问题(并且通常使用事件聚合方面)是您需要由多个模块处理的任何CompositePresentationEvents或至少在raise模块的“外部”处理,您需要在公共位置声明(我通常将它们放在一个名为Infrastructure的项目中)。我不是太喜欢这个。