代码之家  ›  专栏  ›  技术社区  ›  Cory Charlton

为什么要在WinForms上使用WPF?有没有wpf优于winforms的例子?

  •  13
  • Cory Charlton  · 技术社区  · 14 年前

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

    我有两个应用程序执行相同的操作,一个在WPF中,另一个在WinForms中。WinForms应用程序在性能方面(提高了10倍)将WPF应用程序吹走,看起来也很不错。

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

    5 回复  |  直到 14 年前
        1
  •  16
  •   Community Egal    7 年前

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

    WinForms应用程序会破坏WPF 在以下方面的应用 性能(10倍)和 看起来也不错。

    WPF不仅仅是一个花哨的图形… 我不是设计师,该死的,我对颜色没有感觉(到了我未婚妻决定的程度) 我不能再买自己的衣服了),但我喜欢WPF。例如,数据绑定支持是惊人的 更不用说为列表框创建一个itemtemplate有多简单(记住,在Windows窗体中重写draw方法只是为了在列表框项中获取两行文本和一个图像?)

    至于表演…根据我的经验,只有在使用 带有GPU的Windows Vista/7。(当然还有你写代码的方式)。

    也许微软把WPF推广到粉红大象的图形上是一个错误,但它做的更多。(他们对紧急释放犯了同样的错误 在我看来,他们应该一起跳过Silverlight 1)。

        2
  •  4
  •   Phillip Ngan    14 年前

    WPF

    1. 允许设计师/非程序员改进UI的外观,与代码分开。设计师可以使用像ExpressionBlend这样的工具来大幅修改应用程序的外观。
    2. 编写WPF所需的知识对于编写Silverlight代码几乎是完全可移植的,因此对于两种技术来说,您正在攀登一条学习曲线。
    3. 在微软的大力推广下,可能比WinForms更有前途。WinForms将在WPF之前进入MFC。

    另一方面:

    1. 对于WPF,学习曲线比WinForms更重。
    2. 与WinForms相比,缺少设计器支持,尽管这可能会随Visual Studio 2010而改变。
    3. 当前的趋势是使用View-ViewModel模型来构建应用程序:这是在WPF框架的基础上进一步学习的,但是如果要构建简单的UI之外的任何东西,就值得付出努力。

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

        3
  •  2
  •   kyoryu    14 年前

    加入WPF的最大原因不是眼糖。真正的收益是在可靠性、生产率和允许艺术类型修改用户界面外观方面,而不需要工程师参与。

        4
  •  1
  •   Ronald    14 年前

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

    然而,WPF是否会成为主流仍有待观察。这个框架太棒了,它可以做一些很酷的事情,主要是和眼糖有关的。微软称之为UX,但在简单的英语中,它是一个“眼糖”。大多数应用程序不需要它。

        5
  •  0
  •   scptre    14 年前

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

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

    看看这个Silverlight和WPF库,您将看到一些可以在WPF环境中完成的事情。

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

    WPF图书馆: http://demos.telerik.com/wpf/