【发布时间】:2010-03-11 21:18:10
【问题描述】:
使用Prism - 在 WPF 应用程序中处理导航的最佳方式是什么?你如何应用它?有没有最佳实践?
在我的应用程序中,我目前正在使用事件聚合。在程序中应该导致导航的任何菜单项或其他项都将发布事件,并且负责打开由发布的事件表示的视图的模块将这样做。这很好用,但我觉得这不是使用 Prism 处理导航的最佳方式。是吗?
【问题讨论】:
标签: .net wpf navigation prism
使用Prism - 在 WPF 应用程序中处理导航的最佳方式是什么?你如何应用它?有没有最佳实践?
在我的应用程序中,我目前正在使用事件聚合。在程序中应该导致导航的任何菜单项或其他项都将发布事件,并且负责打开由发布的事件表示的视图的模块将这样做。这很好用,但我觉得这不是使用 Prism 处理导航的最佳方式。是吗?
【问题讨论】:
标签: .net wpf navigation prism
至少在 Prism 方面,这是一种与其他方法一样好的方法。我以前做过的一种方法是将一个模块/类设置为您的“导航代理”;对于 MDI 类型的应用程序,由于缺乏创造力,我通常将其称为 WindowManager。这家伙将被注入 IRegionManager 和 IEventAggregator 并开始侦听任何“新窗口”或“导航至”类型的事件并适当地更改/创建区域。如果你想稍微聪明一点,可以开始使用作用域区域管理器:
http://msdn.microsoft.com/en-us/library/cc707903.aspx
这种策略的主要问题(以及一般使用事件聚合方面)是您需要由多个模块或至少在提升模块“外部”处理的任何 CompositePresentationEvents,您需要在一个公共位置声明(我通常将它们放在一个名为 Infrastructure 的项目中)。这个我不太喜欢。
【讨论】: