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

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

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

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

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

  1. 您是否向 WPF 初学者推荐 Prism?
  2. 在我对 WPF 有更多经验之后,是否可以移除 Prism 并构建我自己的 UI?

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

谢谢。

【问题讨论】:

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

标签: c# wpf desktop-application prism-4


【解决方案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(包括我的)和其他地方的文章可以帮助您开始了解所有这些主题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多