我应该使用 Prism 来开发简单的桌面应用程序吗? C#

Posted

技术标签:

【中文标题】我应该使用 Prism 来开发简单的桌面应用程序吗? C#【英文标题】:Should I use Prism for developing simple desktop applications? C# 【发布时间】:2011-08-03 05:25:08 【问题描述】:

我想继续使用 WPF 应用程序并将我的 win-form 应用程序转换为 WPF

目前有太多关于 WPF 的知识需要了解才能获得好的应用程序...

我找到了棱镜: http://msdn.microsoft.com/en-us/library/gg406140.aspx

而且我相信这可以成为一个捷径,让我通过简单地添加我的业务逻辑来获得 WPF 的酷炫功能。

    您是否向 WPF 初学者推荐 Prism?

    在我对 WPF 有更多经验之后,是否可以移除 Prism 并构建我自己的 UI?

    如果您对创建支持多视图和导航的桌面应用程序有其他想法 - 请告诉我

谢谢。

【问题讨论】:

也许不是 Prism,但像 Unity 或 Ninject 这样的 DI 库会是个好主意。我认为不需要 MVVM 库,因为自己实现基础知识很简单。 您的两个问题的答案是否定的。该库适用于 UI 端超过 10 名开发人员的大型应用程序。使用简单的 MVVM。你的应用程序怎么样 - 我会使用带有关闭按钮的选项卡,例如 VS2010。如果您想导航到视图 - 打开一个新选项卡。如果您想离开视图 - 关闭选项卡。每个选项卡可以有不同的视图,并且不依赖于其他选项卡。 @vorrtex:我发现标签非常方便。然而,我认为它们对于简单的用户来说非常复杂。我想要一个简单的用户界面,它将导航逻辑放在我身上:用户不需要了解另一个选项卡上有更多信息。 标签一点也不复杂。让我们以网络浏览器为例,我敢打赌任何用户都可以理解其他选项卡有附加信息。这个界面是最现代的,已经取代了多窗口界面和 MDI。 【参考方案1】:

不,Prism 是位于 WPF(或 Silverlight)之上的一个大层。它不会使学习 WPF 变得更容易,也不会消除学习 WPF 如何工作的需要。 Prism 是一个非常强大的抽象层,可以加速大型企业应用程序的创建/维护——但它的学习曲线超出了 WPF 的学习曲线。如果您只是构建一个简单的应用程序,请直接在 WPF 中构建它。你学到的东西将帮助你以后用 Prism 构建东西。要真正有效地使用 Prism,您需要熟悉 WPF 开发的许多更复杂的方面,例如绑定、XAML 和 MVVM 设计模式。从在一个小项目中孤立地学习这些东西开始,然后您就可以更好地在更大的未来项目中有效地使用 Prism。

【讨论】:

@Levy:我真正需要的是mdi form之类的东西......根据父导航替换页面的主要表单。我读到 mdi 是一种不好的做法,应该使用 mvvm。如您所见,我也是 mvvm 的新手。那么,您能否提供一个比 prism 简单但具有 mdi 外观和感觉的启动项目 在至少对 WPF 有基本了解之前学习 Prism 就像在您知道如何建造狗屋之前建造豪宅。 @Asaf 我建议您编辑您的问题(或提出一个新问题),指定您想从 Windows 窗体 MDI 迁移到 WPF,以及学习 WPF 的最佳方式是什么。【参考方案2】:

Robert Levy 提供的answer 非常完美,我想添加一些内容,当您从 Windows 窗体迁移到 WPF 时,请尽量避免使用可在 Windows 窗体中使用的相同模式。在开始实施之前尝试了解如何使用 WPF 完成任务。

你可以找到here非常好的资源来学习MVVM模式。

【讨论】:

【参考方案3】:

正如其他答案所暗示的,Prism 不会缩短 WPF 学习。 Prism 更多的是关于将应用程序划分为模块,并独立开发每个模块。

以下是我的建议:

不要试图学习所有的 WPF。您可以使用相对较少的 WPF 编写出色的业务线应用程序。

了解 MVVM 模式。 MVVM 广泛用于将 UI 关注点与应用程序的后端关注点分开。

学习棱镜。它对除了琐碎的应用程序之外的所有应用程序都很有用。它可以很好地降低 WPF 应用程序的复杂性,并减少应用程序各部分之间的耦合。一旦掌握了它,它确实会让应用程序更易于维护和开发。

有关于 CodeProject(包括我的)和其他地方的文章可以帮助您开始了解所有这些主题。

【讨论】:

以上是关于我应该使用 Prism 来开发简单的桌面应用程序吗? C#的主要内容,如果未能解决你的问题,请参考以下文章

WPF PRISM开发入门二(Unity依赖注入容器使用)

google 的 firebase 可以与 java 桌面应用程序一起使用吗?

用JAVA语言能开发桌面应用程序吗?

使用 Xamarin.Forms 和 Prism 的图像点击事件

blue prism优缺点

.NET6+WPFWPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入