我正在编写简单的Windows应用程序。我不需要DB支持。为什么我会使用WPF而不是WinForms?
答案 0 :(得分:56)
一个明显的答案是,WPF提供了比WinForms更丰富的用户体验,例如在用户界面中允许动画甚至是3D。
从开发的角度来看,强制将用户界面(在XAML中)与业务逻辑(在VB.NET或C#中)分离是一件好事。
Google搜索“WPF vs WinForms”会引发大量讨论此问题的网页。我不会在这里重复他们的所有发现,但this page提出了一些有趣的观点:
- WPF中的数据绑定优于Windows Forms提供的功能。
- UI和C#业务逻辑可以在WPF中完全分离
- 故事板
- 数据/控制模板 - 比Windows更清晰的方式 表格可以提供。
- 风格 - 酷而简单。它很容易设计所有按钮的样式 应用程序具有相同的外观和 感觉。
- 即使VS设计师破解,也很容易编码XAML。
- 用户界面虚拟化 - 我有100K行的网格,勾勒出移动 市场。表现会很糟糕 如果它不是用于UI可视化 这是免费的。
- 3D支持。
- 没什么科学的,但UI开发在WPF中感觉更快 - 也许只是因为一个WPF 应用程序看起来更酷 迭代,或者也许是因为 发展确实更快。
- 我可以为我的团队添加一个用户体验工程师,没有C# 知识他可以在魔术中发挥作用 Expression Blend并给出 前台交易应用程序 保证赢得的改造 对业务用户而言。
醇>
答案 1 :(得分:15)
WPF是开发Windows桌面应用程序的当前平台。它是一个现代的,先进的,硬件加速的框架,用于开发维护关注点分离的应用程序。它支持2D矢量和3D图形的高级渲染,为构建丰富,交互式和高质量的用户界面提供了广泛的功能。
另一方面,Winforms提供了一个基本平台,用于使用标准控件开发具有标准外观的“经典”Windows应用程序。它不提供WPF提供的丰富的硬件加速矢量2D和3D功能。 Winforms应用程序往往在应用程序行为和UI(视图)之间有更大的耦合,这为开发应用程序提供了一个不太灵活的平台。至于您选择哪一种,完全取决于您的需求。如果您需要矢量图形,3D渲染,创建丰富,交互式,动画,现代用户界面和/或希望保持关注点分离的能力,WPF绝对是正确的选择。如果您不需要这些,只需要创建一个简单的UI来解决一个简单的问题,winforms就能很好地满足您的需求。
答案 2 :(得分:14)
(我不知道DB支持与它有什么关系)
答案 3 :(得分:6)
WinForms
和WPF
之间最重要的区别在于,虽然WinForms只是标准Windows控件(例如TextBox)之上的一层,但WPF是从头开始构建的几乎在所有情况下都不依赖于标准的Windows控件。这似乎是一个微妙的区别,但实际上并非如此,如果你曾经使用过依赖Win32 / WinAPI的框架,你肯定会注意到。
一个很好的例子就是一个带有图像和文字的按钮。这不是标准的Windows控件,因此WinForms不提供开箱即用的这种可能性。相反,您必须自己绘制图像,实现自己的支持图像的按钮或使用第三方控件。使用WPF,按钮可以包含任何内容,因为它基本上是内容和各种状态的边界(例如,未触摸,悬停,按下)。与大多数其他WPF控件一样,WPF按钮是“无外观”,这意味着它可以包含一系列其他控件。你想要一个带图像和一些文字的按钮?只需将一个Image和一个TextBlock控件放在按钮内,就可以了!你只是没有从标准的WinForms控件中获得这种灵活性,这就是为什么有相当简单的控件实现的大市场,比如带图像的按钮等等。
这种灵活性的缺点是,有时你必须更加努力地使用WinForms来实现一些非常容易的东西,因为它是为你需要它的场景而创建的。至少在开始时就是这样,你发现自己创建模板来创建一个带有图像的ListView和一些很好的对齐文本,这是WinForms ListViewItem在一行代码中所做的事情。
这只是一个区别,但是当你使用WPF时,你会发现它实际上是许多其他差异的根本原因 - WPF只是以自己的方式做事,无论好坏。 。你不再局限于以Windows的方式做事,但为了获得这种灵活性,当你真的只是想用Windows做事时,你会付出更多的工作。
答案 4 :(得分:4)
WPF可以在某种程度上利用硬件加速,但预计会随着时间的推移而改善。
此外,由于XAML,您可以选择“做事”,声明性与程序性,或两者兼而有之。
微软不再对winforms进行积极的开发,他们强烈推动WPF,并且有充分的理由。
WPF允许更容易的“解决方案不可知”设计。为了在winforms中实现这一点,这是很多更多的工作。
在其中一条评论中已经提到了MVVM模式,根据我的经验,这允许我们对你的代码进行真正的单元测试而不是基于GUI的测试,这是一个重大胜利。 / p>
答案 5 :(得分:2)
没有人提到WPF应用程序的更好测试功能(如果它们以正确的方式编写,例如基于MVVM模式)。
答案 6 :(得分:1)
如果您希望拥有丰富的用户界面,例如previous question中发布的图片,我建议您使用WPF。除了使创建一个漂亮的应用程序更容易之外,它也是微软未来推出的技术。 Winforms几乎没有新的发展。
答案 7 :(得分:1)
A
由于XAML而在任何地方执行。
可用作WinApp,WebApp,移动。
WindowsForm内部用户界面表示形式为C#。
B
绑定->简单的对象到对象数据传输。
C
常见外观(样式)->可以共同定义外观样式并将其用于一堆控件。
D
指令性编程->绑定XAML中的对象。
E
表达融合和动画-> WPF使用DirectX,DirectX可以用于动画。
F
快速执行(硬件渲染)
WPF内部使用DirectX(硬件渲染),而Winform内部使用GDI(主要使用软件渲染)。
计算机通过两种方式在监视器上呈现显示。
1)(CPU)软件渲染-> CPU渲染时,CPU驱动显示器上渲染显示的整个逻辑。CPU还执行其他操作,例如运行应用程序,执行内存管理,运行OS。因此,最重要的是要在监视器上显示内容。
2)(GPU)硬件渲染->其专门的kinda处理器,专门用于在显示器上更快地渲染和显示。
现在在WPF中,此渲染已在
中进一步优化
>Tier 0 mode (Software rendering) uses DirectX7 internally,
>Tier 1 mode (Partial Hardware rendering) uses DirectX7 to DirectX9 internally,
>Tier 2 mode (Hardware rendering) uses DirectX9 internally.
G
图形独立性(DIP)->分辨率独立性
分辨率->适合屏幕/显示器的像素总数
像素->屏幕上的简单点。
Windows窗体使用像素作为度量单位,因此当像素变化时,win窗体必须自行调整,这意味着我们必须为其编写逻辑。
但是WPF不使用像素作为度量单位,而是使用DIP(与设备无关的像素)
1 DIP =英寸的1/96英寸。
最后一次测试->使用MVVM模式进行更好的单元测试。
答案 8 :(得分:0)
WPF与Winforms相比的优点和缺点:
但是,WPF有一些缺点,其中WinForms排名第一:
答案 9 :(得分:0)
WinForms 和 WPF 之间最重要的区别在于,虽然 WinForms 只是标准 Windows 控件(例如 TextBox)之上的一个层,但 WPF 是从头开始构建的,不依赖于标准Windows 控件几乎适用于所有情况。
一个很好的例子是一个带有图像和文本的按钮。这不是标准的 Windows 控件,因此 WinForms 不提供这种开箱即用的可能性。相反,您必须自己绘制图像,实现自己的支持图像的按钮或使用第 3 方控件。使用 WPF,按钮可以包含任何内容,因为它本质上是一个包含内容和各种状态(例如未触摸、悬停、按下)的边框。