使用winform而不是WPF的特定优势

时间:2012-05-15 07:21:01

标签: .net wpf winforms

所有是否包含在WPF中的WinForm的功能? 使用传统的WindowsForm而不是WPF有什么特别的优势吗?

5 个答案:

答案 0 :(得分:5)

理论上你可以使用Winforms几乎所有你用WPF做的事情,但在某些情况下你需要更多代码,特别是关于图形效果。

与WPF相比,Winforms的一些优点可能是:

  • 更简单的技术
  • 非常稳定的技术,因为非常老。 WPF仍有一些儿童疾病,例如XAML绑定错误仅在输出窗口中进行比较,并且您没有任何异常。
  • 较少的自由可能会让你更务实。在WPF中你有很大的自由度和图形,例如自定义一个控件,这可能非常有趣,但也可能带给你太多浪费的时间(从很多时间的颜色来看,画笔,动画等..)。在Winforms中,你可能会花更少的时间用于图形(至少我的经验)

答案 1 :(得分:2)

这取决于你的问题。 WPF是一种更新的技术,可以更好地分离关注点,更容易灵活渲染,并允许UI的硬件加速。

任何技术的优势都特定于项目的约束和要求。例如:WinForms的一个优点是,如果您只部署到没有/不能拥有.NET 3+的Windows XP计算机,因为在.NET 2上只能使用WinForms。

答案 2 :(得分:2)

Winforms与WPF相比只有很少的优势:

  • 有许多内置控件可供使用(但在WPF中更容易自定义和创建新控件,还有许多第三方库)
  • 适合遗留系统(Win2000)
  • 有更多具有Winforms经验的开发人员

WPF上的所有其他内容都更好。

答案 3 :(得分:2)

这有点像询问为什么要在Flash电影中显示HTML表格。 首先:你可以随意混合,即使在元素级别(使用WinFormsControlHosts)。但你应该问问自己为什么要混合这些技术。

听起来你是WPF的新手,所以请注意,虽然WPF可以做所有WinForms可以做的事情,但是你前面有一个非常陡峭的学习曲线。标记世界的情况有所不同......

混合的原因只能是金融性的。您要么没有时间/资金/资源来在WPF中实施它,要么学习如何做到这一点,或者您的客户希望按时交付,并且不会对代码的质量感到遗憾。也许你已经在第三方WinForms组件上花了很多钱,这可以节省数小时的恶劣开发。

另一方面,有理由不混合:

  • WPF支持硬件加速,WinForms仅渲染为Cpu。我没有测试使用互操作时渲染模式究竟发生了什么。

  • 正在更新WPF。在.Net 4.5中,它获得了更多的DataBinding工具(无论如何都比WinForms好)。自.Net 2.0

  • 以来,WinForms没有收到提及的更新

总结一下:你的案子有混合的理由吗?如果不是这样,请不要。 如果绝对必要,我会通过添加WPF对话框为Winforms应用程序添加功能,但总是试图避免反过来。

答案 4 :(得分:1)

也许是因为它更容易?但我不会做winforms。和WPF一起去吧。如果你觉得它太难了,你就不会被迫做MVVM。对于小型应用程序,MVVM可能过度杀伤。