大多数Windows窗体的限制和技巧对大多数程序员来说都是常见的。但是自从.NET 3.0之后,也可以使用WPF,即Windows Presentation Foundation。据说你可以更轻松地制作“性感应用程序”,并且在.NET 3.5 SP1上执行速度得到了良好的提升。
但是另一方面,很多事情在WPF中运作不同。我不会说它更困难,但你必须从头开始学习“所有”东西。
我的问题是:当你需要创建一个新的GUI,并且项目没有时间压力时,是否值得花费这些额外的时间呢?
大多数Windows窗体的限制和技巧对大多数程序员来说都是常见的。但是自从.NET 3.0之后,也可以使用WPF,即Windows Presentation Foundation。据说你可以更轻松地制作“性感应用程序”,并且在.NET 3.5 SP1上执行速度得到了良好的提升。
但是另一方面,很多事情在WPF中运作不同。我不会说它更困难,但你必须从头开始学习“所有”东西。
我的问题是:当你需要创建一个新的GUI,并且项目没有时间压力时,是否值得花费这些额外的时间呢?
我认为学习WPF是值得的。一旦您掌握了它,表单设计工作会变得更加容易。我不太担心那些“性感”的东西。大多数只是一时的潮流。在WPF中,您可以快速轻松地创建“普通”的WinForms风格应用程序。
整个概念本身更加易于设计,我认为。
我不同意这里的某些回答。WPF非常适合业务应用(LOB)。(青蛙设计公司的LOB客户端是最好的例子)。除了所有可能使你的UI成为炫目的方式(这在商业应用中并不必要),WPF还为您提供了更多的功能。
数据绑定和模板化功能比Windows Forms更加优越。它还提供了一种更好的分离代码和表示层的方式。我们已经成功地在由2-3个开发人员组成的团队中使用WPF来开发2个LOB应用程序。
你可能会面临的最大问题可能是WPF的陡峭学习曲线(与Windows Forms相比),这将降低那些不习惯WPF的开发人员的开发速度。
一个答案是“当你必须支持1.1或2.0时”,因为WPF是.NET 3.0的一部分。 WPF存在已知的操作系统限制,并且存在明显的技能问题:如果您有一组熟悉winforms的开发人员,则使用winforms可能更容易生成稳健的代码。但是,如果您正在编写大量UI代码,则可能值得开始学习WPF。
WPF还与Silverlight共享许多共同点,因此具有可转移的优势。
WPF具有许多优点,如卓越的数据绑定功能、关注点分离、设计和逻辑的分离等。
作为一名开发人员,我享受使用XAML定义我的UI而不是被绑定到Windows Forms设计器,并且我感觉良好,因为我可以指望其他设计师使我的应用程序看起来很好。
个人而言,我不在乎旧版本的Windows没有得到支持,但WPF的一个大问题是它当前/永远不会被Mono(http://www.mono-project.com)所支持,因此WPF应用程序将无法在Mac OS或Linux上运行。(尽管Silverlight应用程序可以)。
如果您有时间和资源投资于学习WPF,请这样做!即使你要编写Silverlight应用程序以支持多个操作系统。
如果您需要在多个操作系统上运行桌面应用程序,请坚持使用SWF。
有很多不同之处。我们喜欢WPF是因为:
然而,我们坚持使用Windows Forms是因为:
在决定使用哪个.NET Framework时,最重要的考虑因素是考虑您的目标受众安装了哪个版本。我发现更多的人安装了较低版本的.NET Framework,只支持Windows Forms,但这只是我的个人经验。
WPF使将表单设计工作交给真正的设计师变得更加轻松,而不是让开发人员充当设计师。如果您想这样做,那么WPF就是您的答案。如果经典的Windows样式按钮很合适,则应选择Windows Forms。
(许多答案声称如果界面设计对您“很重要”,则应使用WPF,但这太模糊了。界面设计始终“重要”。)