【问题标题】:Why should I use WPF over Winforms? Any examples of WPF outperforming Winforms?为什么我应该使用 WPF 而不是 Winforms? WPF 优于 Winforms 的任何示例?
【发布时间】:2009-12-18 02:56:27
【问题描述】:

WPF versus Windows Forms 有一个类似的问题,其中有一些很好的信息,但根据我的个人经验,我认为没有理由在 Winforms 上使用 WPF。 WPF 最初有很多关于它的多线程功能的讨论,但在使用中我没有看到任何好处。

我有两个应用程序做同样的事情,一个在 WPF 中,一个在 Winforms 中。 Winforms 应用程序在性能方面击败了 WPF 应用程序(提高了 10 倍),并且看起来同样出色。

当然,我比 WPF 更精通 Winforms 应用程序。

【问题讨论】:

  • WPF > WinForms,因为您可以将 Web 浏览器放在一个按钮中! ;)
  • @Qberticus:不确定我是否听懂了你的回复。我可以轻松地创建一个 WebBrowserControl 并处理Click 事件。
  • 你不会,但事实上,合成级别是可能的,以及数据绑定功能和动画能力,只是让 WPF 的工作变得有趣。
  • 多线程?我从未见过 WPF 以其多线程功能出售。我看到它以精美的图形和动画出售,我看到它以可扩展的矢量绘图出售,我看到它以建筑和生产力出售……但是多线程?我错过了...
  • 多线程讨论是指视觉树渲染传递发生在单独线程上的事实。是的,这是 WPF 中最大的性能之一,它可以实现在 WinForms 中无法完成的所有流畅的精美图形。

标签: .net wpf winforms


【解决方案1】:

这里有关于这个主题的另一个讨论: When is Windows Forms the correct choice vs WPF?

Winforms 应用程序打击了 WPF 应用程序远在 性能(10 倍)和 看起来一样漂亮。

WPF 不仅仅是精美的图形... 我不是设计师,地狱我对颜色没有感觉(到我未婚妻决定的地步 我不能再买自己的衣服)但我喜欢 WPF。例如,DataBinding 支持是惊人的 更不用说为 ListBox 创建 ItemTemplate 是多么容易(还记得重写 Windows 窗体中的 draw 方法只是为了在 ListBox 项中获取 2 行文本和一个图像吗?)

至于性能...根据我的经验,只有在使用时才能注意到改进 带有 GPU 的 Windows Vista / 7。 (当然还有你编写代码的方式)。

也许微软在市场上宣传 WPF 完全是关于粉红色大象图形,而它的功能远不止于此,这是一个错误。 (他们在匆忙发布时犯了类似的错误 Silverlight 1,我认为他们应该一起跳过)。

【讨论】:

  • +1 毫无疑问,WPF 的主要优势在于您获得了极大的灵活性以及如何编写更好的代码,例如 Model-View-ViewModel 模式。
  • 同意 Timothy 和 Martinho,这是关于架构的。模板和数据绑定是使用 WPF 的令人信服的理由:您可以完成更多工作、更轻松且更易于维护。并且绝对同意微软将 WPF 营销为一种创建愚蠢按钮设计的方式是一个错误。这全部都与架构有关。
【解决方案2】:

WPF

  1. 允许设计师/非程序员改进 UI 的外观,与代码分开。设计师可以使用 Expression Blend 等工具来大幅修改应用的外观。
  2. 编写 WPF 所需的知识几乎完全可以用于编写 Silverlight 代码,因此您正在为两种技术攀登一条学习曲线
  3. 受到 Microsoft 的大力和积极推动,并且可能比 WinForms 拥有更多的未来。 WinForms 将在 WPF 之前走上 MFC 的道路。

另一方面:

  1. WPF 的学习曲线比 Winforms 更重
  2. 与 Winforms 相比,缺乏设计器支持,但 Visual Studio 2010 可能会改变这一点
  3. 目前的趋势是使用 View-ViewModel-Model 来构建应用程序:这是在 WPF 框架之上的进一步学习,但如果您要构建简单 UI 之外的任何东西,则值得努力

如果性能(速度和资源要求)是您对 Windows 良好 UI 平台的标准,那么获胜者就是原生 Win32 应用程序。您采用另一种技术来提供他们必须提供的功能,最终 WPF 比 WinForms 提供的更多。

【讨论】:

  • +1。我不明白的一点:你提到使用 Blend 来修改应用程序的外观,然后你说缺乏设计师支持。
  • Designer 是 Visual Studio 的一部分,而 Expression Blend 是单独的 Microsoft 产品。
【解决方案3】:

使用 WPF 的最大原因不是吸引眼球。真正的收获在于可靠性、生产力以及允许艺术类型在不涉及工程师的情况下修改 UI 的外观。

【讨论】:

    【解决方案4】:

    WPF 的最大问题是工具集蹩脚且学习曲线巨大。到目前为止,WPF 的使用率非常低,主要是因为我刚才提到的问题。根据微软的 WPF 是未来,他们已经投入巨资。事实上,下一版本的 Visual Studio 是用 WPF 编写的 (http://www.onedotnetway.com/writing-visual-studio-2010-shell-in-wpf-reflects-confidence/)

    但是,WPF 是否会成为主流仍有待观察。这个框架很棒,它可以做一些非常酷的东西,主要是与眼睛有关的东西。微软称它为 UX,但用简单的英语来说,它是令人眼花缭乱的。大多数应用程序不需要它。

    【讨论】:

    • 声称您可以在 WPF 中做的很酷的事情主要与眼睛糖果相关的人要么是 1) 曾玩过 WPF 的人,但没有学习 WPF,2)用户。
    【解决方案5】:

    WinForms 和 WPF 都是很棒的框架,问题是什么最适合您的应用程序。如果您需要具有动画控件和非常主题化的样式的流畅 gui,或者只是创建一个非常图形化的用户界面,WPF 非常适合这种应用程序。 WinForms 有时可能会受到很大限制,因为控件就是它们本来的样子,您可以创建用户控件来向它们添加内容,但如果您有一个非常具体的外观,更改它们的外观可能会很困难。

    一个很好的比较是查看 WinForms 应用程序和 silverlight 应用程序之间的区别。 Silverlight 和 WPF 共享一个通用框架,它将帮助您了解两者之间的差异。

    看看这个 silverlight 和 wpf 库,你会看到一些可以在 wpf 环境中完成的事情。

    Silverlight 库:http://demos.telerik.com/silverlight/

    WPF 库:http://demos.telerik.com/wpf/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 2010-09-14
      相关资源
      最近更新 更多