我正在与非常支持 Prism 的 WPF 应用程序的其他开发人员合作,但我只是不了解其中的好处。我通过依赖注入框架和使用 EventAggregator 获得了模块化的想法。但是,如果没有这两件事,使用 Prism 有什么核心优势吗?
基本上我不知道为什么我需要动态加载视图并将它们放置在区域中,而我在开发过程中已经知道它们会去哪里并且它们永远不会改变。
我在网上找到的所有内容都将 DI 的优势视为 Prism 的唯一优势。有什么我想念的吗?
我正在与非常支持 Prism 的 WPF 应用程序的其他开发人员合作,但我只是不了解其中的好处。我通过依赖注入框架和使用 EventAggregator 获得了模块化的想法。但是,如果没有这两件事,使用 Prism 有什么核心优势吗?
基本上我不知道为什么我需要动态加载视图并将它们放置在区域中,而我在开发过程中已经知道它们会去哪里并且它们永远不会改变。
我在网上找到的所有内容都将 DI 的优势视为 Prism 的唯一优势。有什么我想念的吗?
PRISM 提供了一个以模块化方式组成应用程序的框架。因此,您不必将视图注入到区域中,但它会使其更加灵活。您可以更轻松地使用不同的视图并将它们注入您的区域。
我同意 DI 可能是 PRISM 最常用的功能,并且可以说是使用它的最有说服力的理由。一般来说,没有必要使用 PRISM,特别是如果你的应用程序足够小,但它确实使它更灵活地适应未来的变化。解耦组件很好,PRISM 提供了实现它的方法(不是唯一的方法)。
HTH。
我的恕我直言
您对 PRISM 的看法是错误的:
我对棱镜的看法:
同样,这是我的恕我直言。当然,我可能是错的..
我确实大量使用区域和导航。它可能不适用于您的场景,但在我的情况下,我在 TabControl 中打开了多个视图(通过导航)。传递参数(查询字符串)和控制目标(NavigationAware)的能力对我来说很重要。
假设您有带有客户和订单的 UI。您会看到客户和他的订单。您单击特定订单,然后打开另一个页面。猜猜看,您可以使用如下导航访问订单视图:
/订单视图
/OrderView?OrderKey=123
第一个将打开您的视图。第二个将打开并导航到您需要的订单。您还可以将链接从订单视图链接到客户视图
/CustomerView - 将打开新客户屏幕
/CustomerView?CustomerKey=123 - 将打开您的客户或导航回您已经打开的视图。
如果您关心这样的场景 - PRISM 会有所帮助。
如果您的团队在同一视图上使用区域 - 我也没有看到太多好处。而且我没有这样的地区。
另一个示例使用:
我有一个区域的 MenuStackPanel。根据用户权限,应用程序将加载该用户可以使用的模块。当模块加载时 - 他们注册他们的作品并用他们的选项填充菜单。