3

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

4

5 回答 5

5

从理论上讲,您可以使用 Winforms 完成几乎所有使用 WPF 所做的事情,但在某些情况下,您需要更多的代码,尤其是关于图形效果的代码。

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

  • 更简单的技术
  • 非常稳定的技术,因为非常陈旧。WPF 仍然有一些问题,例如 XAML 绑定错误仅在输出窗口中比较并且您没有得到任何异常。
  • 更少的自由可能会让你更务实。在 WPF 中,您在图形方面有很大的自由度,例如自定义控件,这可能非常有趣,但也可能给您带来太多浪费时间(即在颜色、画笔、动画等方面投入大量时间) . 在 Winforms 中,您可能花在图形上的时间更少(至少我的经验)
于 2012-05-15T07:48:29.473 回答
2

这取决于你的问题。WPF 是一种较新的技术,它提供了更好的关注点分离、更容易灵活的渲染,并允许对 UI 进行硬件加速。

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

于 2012-05-15T07:33:27.593 回答
2

Winforms 与 WPF 相比只有几个优点:

  • 有许多内置控件可供使用(但在 WPF 中自定义和创建新控件更容易,也有许多 3rd 方库)
  • 它适合旧系统(Win2000)
  • 有更多Winforms经验的开发者

所有其他在 WPF 上都更好。

于 2012-05-15T07:34:06.070 回答
2

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

听起来您对 WPF 还很陌生,因此请注意,虽然 WPF 可以完成 WinForms 可以做的所有事情,但您的学习曲线非常陡峭。标记世界中的情况有所不同......

混合的原因只能是财务性质的。您要么没有时间/金钱/资源在 WPF 中实现它,要么学习如何去做,或者您的客户期望按时交付并且不关心代码的质量。也许您已经为可以节省数小时讨厌的开发的第 3 方 WinForms 组件支付了很多钱。

另一方面,也有不混的原因:

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

  • WPF is being updated. In .Net 4.5 it gets some more DataBinding facility (which is better than WinForms anyway). WinForms hasn't received mentionable Updates since .Net 2.0

To sum it up: Is there any reason for mixing in your case? If not so, don't. If absolutely necessary, I would add functionality to a Winforms App by adding WPF dialogs, but would always try to avoid the other way round.

于 2012-05-15T08:17:48.093 回答
1

也许是因为它更容易?但我不会做winforms。使用 WPF。如果您认为 MVVM 太难,您也不必被迫执行 MVVM。而 MVVM 对于小型应用程序来说可能是多余的。

于 2012-05-15T07:23:19.510 回答