Windows Forms与WPF的比较

68

我开发Windows Forms应用程序已经有5年了。很多人说我应该研究一下WPF。我有一些关于WPF和Windows Forms的问题,以确定哪一个更好。 WPF比Windows Forms更新,许多人说它将是未来。还有人说Windows Forms更老,因此更安全。我不确定哪个才是未来。我已经谷歌了优缺点,但我希望您能更深入地回答以下问题:

  1. 基于性能,哪个更好?
  2. 使用WPF而不是Windows Forms的主要优势是什么?
  3. 使用Windows Forms而不是WPF的主要优势是什么?
  4. 企业更喜欢/更常使用哪一个?
  5. 从Windows Forms切换到WPF有多难?
  6. 哪些WPF部分我一定要看?

1
部分答案:5. WPF 学习曲线相对较陡峭,因为它与 Windows Forms 差别非常大。 - DrKoch
更加安全是我不同意的,WinForms 中没有任何东西可以使其更加安全,如果有什么问题,它可能会更不安全,因为有时您需要使用旧版本的 API(尽管这只是一个年龄问题)。您提出的问题其他部分仍然很广泛。 - Sayse
DrKoch,难点在哪里?Xaml、数据绑定等吗? - Ron van Asseldonk
3
这个网站提供了一个不错的简短对比,而我发现另外一个也很有趣:https://www.educba.com/winforms-vs-wpf/。 - gouderadrian
1个回答

72
  1. 没有意义说WPF比Windows Forms更好或者反之,这取决于许多因素:

    • 您正在构建什么样的UI界面。 显然,您设计的视图的复杂性将影响两个平台上的性能。它们具有不同的布局和渲染流水线。

    • 在每个平台上如何有效地优化性能。

  2. 使用WPF而不是Windows Forms的优点:

    • XAML使创建和编辑GUI变得容易,并允许工作在设计师(XAML)和程序员(C#,VB.NET等)之间分配。

    • 它允许您为Windows应用程序和Web应用程序(Silverlight / XBAP)创建用户界面。

    • Databinding可以使数据和布局更清晰的分离。

    • 利用硬件加速绘制GUI,提高性能。

  3. 使用Windows Forms而不是WPF的主要优势:

    • WPF自带控件套件远不及WinForms多。

    • 第三方控件空间对WinForms的支持更广泛。(情况正在改变,但目前由于时间优势,WinForms在社区中得到了更多的支持。)

    • WPF的主要缺点是Mono对它支持不够(例如,在Linux和Mac上无法运行)。最初,Xamarian / Novella表示他们不打算实现它,因为实现的复杂性。我没有看到任何相反的东西。并不是说这不可能,但他们的建议是编写模型类,然后进行特定于操作系统的前端。即使WPF是开源的,它也可能构建在不易移植的东西上。

  • https://social.msdn.microsoft.com/Forums/en-US/e134134a-352f-435b-943a-eda7a2b14fc0/wpf-vs-windows-forms-2015?forum=wpf

  • 取决于您的学习能力。

  • 我应该一定要学习哪些WPF部分?

    • XAML:了解XAML及其在WPF应用程序中的使用。

    • 布局:了解布局面板及其如何用于构建用户界面。

    • 数据绑定:了解WPF数据绑定的工作原理以及如何使用它。

    • 数据模板和触发器:了解数据模板和触发器的工作原理以及如何使用它们。

    • 样式:了解如何在WPF中为用户界面设置样式。

  • 欲了解更多信息,请参阅以下网址:

    Windows Form与WPF Windows对比


    4
    这是我的意见。我目前正在开发一个基于GPS的实时监测工具(车辆等)。WPF 在图形、重绘、缩放、旋转等方面非常出色,但学习曲线确实存在,但并非不可能掌握。问题是,你的项目是否非常基于GUI或只是传统交易。如果你已经有丰富的 WinForms 经验,可以在传统交易中继续使用它。如果你在图形方面走得很高,WPF 可以让你更好地区分设计(为设计师)和后端(为交易商)。但学习曲线也同样存在。 - gouderadrian

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接