WPF或Windows Forms

77

我已经玩了一年左右的C#控制台应用程序,现在想要进入 GUI 应用程序开发。除了基础的 Java 应用程序外,我从未进行过任何 GUI 开发,但我希望继续使用 C#。我应该开始学习 Windows Forms 还是直接跳到 WPF?它们之间有很大的区别吗?WPF 是建立在 Windows Forms 之上还是完全不同的?


我觉得这个网站非常有趣:https://www.educba.com/winforms-vs-wpf/ - Daniel Möller
4个回答

74
如果你刚开始学习,直接使用WPF吧。
它将允许你使用标记语言定义你的界面,制作丰富的界面,而不需要教授你可能从Windows窗体中学到的不良习惯(对于WPF而言)。

2
+1 我完全同意。WPF比Windows Forms更加灵活,是GUI开发的长期趋势。它在使用基于XML的布局方面非常接近HTML。目前支持Windows Forms的最好理由是如果你有一个具有丰富经验的开发团队。WPF是未来,而且已经远远领先于Windows Forms。 - sidney.andrews
2
+1 但是,由于在以前的版本中存在字体问题,因此只能从.NET 4.0+使用WPF,因此请记住这一点以进行应用程序部署。 - Josh
13
WPF可用于.NET 3.5。已经建立了许多有用的应用程序...字体问题并非每个人都会遇到无法解决的障碍。 - Justin Niessner
2
+1 - 完成多年的WinForms,现在转向WPF。再也不会回头了 ;) WPF更加美观,速度更快。多年来一直使用第三方控件,现在我仍然使用它们,但不是唯一的选择(即标准控件也可用,第三方控件不是替代品而是新东西)。特别是在.net 4.0下,wpf非常出色。哦,我还进行高性能数据可视化(即金融工具交易应用程序)。 - TomTom
2
WPF 有一定的学习曲线,但一旦掌握了它,它就非常强大。确保你从 MVVM 模式开始,这只是合乎逻辑的选择。 - Grokys

25
这两种技术完全不同。它们确实提供了一些相互操作的层,但除此之外没有任何共同点。Windows Forms或多或少是Win32 / MFC之上的一个轻量级包装器,这意味着在某些情况下其在.NET中的可扩展性并不那么好。WPF是从头开始实现的新UI框架。在自定义现有类型方面,WPF也更加灵活。
然而,至少从我的经验来看,Windows Forms似乎是工业界中使用最广泛的桌面UI框架。 Windows Forms不能用于Web开发,而WPF则提供银光和XBAP应用程序。
如果您以前做过UI开发,我敢说Windows Forms更容易学习,因为它遵循更传统的编程范例。 WPF的编程模型与此非常不同。虽然WPF可以像Windows Forms一样使用,但只有当您采用WPF提供的数据绑定和封装时,大部分优势才能得到实现。
尽管提出了一些支持Windows Forms的观点,但如果您只想学习UI框架,选择WPF而不是Windows Forms对我来说是显而易见的。在各个方面,它都优于Windows Forms。我只希望软件行业普遍采用它!(不过自从我们有了Web以后,似乎也没人再编写桌面应用程序了)

10

两种技术都有其优缺点。

WPF 更适合跨平台开发和创建“酷炫”的 GUI。然而,它需要比 WinForms 更新的 .net 框架,并需要一个 dx9 兼容 GPU 或更高版本(大多数人都会有这个)。

但是创建界面/连接所有事件等方面需要的工作量会比较大。

WinForms 仍然是一种强大的技术,通常比 WPF 更快地开发,然而,两种技术最终都可以用于实现相同的事情。 然而,WPF 是“新”标准。

WinForms 通常用于开发商业应用程序,而 WPF 则经常用于创建更多面向终端用户的软件、应用程序等。


6

WPF提供了非常丰富的功能,可以构建非常复杂的用户界面。它简化了在界面中集成硬件加速图形的过程。然而,Visual Studio WPF设计师真的很糟糕(我几乎从不使用它)。我认为WPF更加复杂,更难入门。当然,这是主观的。


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