WPF的替代方案

6

WPF被定位为WinForms的后继者,但考虑到微软放弃工具包的惯例(以及我认为WPF中存在的“膨胀”),是否有任何推荐的替代品?

WPF被定位为WinForms的后继者,但考虑到微软放弃工具包的惯例(以及我认为WPF中存在的“膨胀”),是否有任何推荐的替代品?


我很好奇您认为WPF中的“膨胀”是什么。 - Cameron MacFarland
你说WPF是臃肿的东西,这是什么鬼话?你真的用过它吗? - abmv
3
如果有什么不足的话,WPF还没有充分发展——他们还有很多功能没有来得及添加到核心工具包中。 - vanja.
4
我已经使用它多年了,但我不断遇到性能问题。 - Brady Moritz
8个回答

14

我认为你不需要担心WPF被抛弃。WinForm存在了很长时间,而WPF是替代品

过于臃肿?我不知道。对我来说,它似乎是从WinForms进行了大量升级。如果存在过多的内容,因为在所有内容下面都是Win32 API,所以这种情况总会存在。除非从头开始重写,否则我认为没有什么东西是完美的。由于针对Windows平台的每个工具包都必须处理这个问题,所以我宁愿选择WPF和ReSharper。


7
另一个表明微软认真对待WPF的迹象是,它正在被用来制作Visual Studio 2010。XAML似乎不仅仅被WPF(Workflow Foundation、Communication Foundation)所使用。
在过去的5年中,我一直在编写WinForms,起初我对WPF持怀疑态度。但是在阅读了几本书并尝试了我的第一个WPF应用程序后,我开始看到它的美妙之处!
我一直惊讶于在WPF应用程序中需要多少少量的“粘合”代码,与我在WinForms中所做的相比。这里有一个例子:我需要显示一个简单的直方图。在WinForms中,我会编写自定义控件并自行处理渲染。在WPF中,我只需使用xaml完成所有操作,而不需要一行代码!我将数据样本绑定到列表框,将列表框的布局模板替换为水平堆栈面板,并将项目模板替换为高度绑定到样本值的矩形!

4
我认为Windows 8专注于HTML5可能会引起警觉。WPF的采用率从未那么高,而且微软肯定会在VS中提供对HTML5的支持,因为它期望Windows 8的应用程序是用HTML5编写的... - Loudenvier
@Loudenvier 这并不完全正确。您所提到的HTML5支持是使用新的Windows Runtime,这是Windows 8的Metro部分。Visual Studio 11是在Windows 8桌面部分上构建的应用程序,无法访问WinRT。WPF支持将通过操作系统的桌面端继续进行Windows 8。 - Samuel Slade
@SamuelSlade,你说的一切都是对的。这些都是真实和正确的。而且也不与我所说的相矛盾。但是我永远不会在WPF上开始一个新项目。事实上,我拒绝了一份工作(薪水更高!),因为它将管理一个WPF项目,而我认为这项技术没有未来,我不想花费大量时间在“已弃用”的技术上工作,然后变得有些过时。HTML 5(我知道:什么才是真正的HTML 5?没有人知道 :-))是我的答案,或者是好老的WinForms :-)。 - Loudenvier
虽然有点好笑,但我讨厌为桌面编写WPF应用程序,但我喜欢XAML。我讨厌HTML(甚至是HTML5)和CSS的限制,像我这样的许多人都希望我们可以使用XAML作为CSS / HTML的替代品。 - jay_t55

6

微软没有放弃工具包的做法(WinForms、MFC、ActiveX和Win32仍在积极开发),而“膨胀”实际上是一些新功能,你现在可能不需要,但未来很有可能会需要。

如果您不想要“膨胀”,并且只使用MS将无法停止支持的API,那么您可以直接使用Win32 API。


5
Silverlight、XNA、Compact Framework、J#和FoxProSilverlight - 银光:一种用于创建互动Web应用程序和媒体体验的Microsoft技术。XNA - XNA框架:一种Microsoft开发工具,旨在帮助游戏开发人员轻松创建Xbox 360、Windows和Windows Phone上的游戏。Compact Framework - 紧凑框架:是一种Microsoft .NET Framework,为移动和嵌入式设备提供了一个轻量级版本的.NET平台。J# - J#语言:一种由Microsoft开发的Java编程语言的变种,旨在支持在.NET框架中运行Java代码。FoxPro - FoxPro数据库:一种由Microsoft开发的关系型数据库管理系统(RDBMS),旨在帮助组织存储和管理数据。 - Dai
不要忘记Entity Framework,尽管他们已经公开了该框架的源代码。 - Drakarah

4
我认为五分之四的开发人员从来不会深究技术的内在,他们只想拖放几个控件、写几行代码让程序跑起来,或者谷歌搜索一些示例帮助解决一些问题,就这样。对于这样的人来说,“膨胀”不是他们词汇表中的一个词。
相比之下,我更喜欢深入了解技术的内部工作原理,然后再使用该技术编写代码。今天,我花了大约一个小时的时间研究WPF内置命令的工作原理,并通过反射跟踪了一个简单的内置剪切命令在普通文本框控件中的执行过程。当剪切操作引发文本更改事件时,调用堆栈上有大约30次调用,这难道不是代码膨胀吗?
WPF确实有许多强大的功能,但付出了代价。在某些方面,我觉得WPF就像MFC对Win32 API一样;WPF和MFC都至少有“基础”这个词: ),但很有趣的是,看看WPF是否会遭遇MFC的同样命运。

3

Qt Quick(QML)是最好的选择。它具有极其精美的设计,且避免了XML难以阅读的问题。


3

这取决于你喜欢的编程语言,但对于C ++,Qt是一个很好的Gui工具包。它拥有令人印象深刻的功能,是免费的,并且对于GUI工具包而言,它是平台无关的。


我认为它不适用于商业用途,然而。 - ine
@amdfan:随着转移到LGPL,这个问题不是已经改变了吗? - Nick Devereaux
1
它是的。从v4.5版本开始,它可在LGPL下使用,因此您可以将其用于闭源和/或商业应用程序中。只有对QT本身所做的更改需要作为源代码公开。(请参见http://www.qtsoftware.com/products/licensing) - sth

1

Adobe AIR 是一个强大的竞争对手。如果你想创建具有丰富用户界面的跨平台应用程序,请查看此软件。


0
首先,我喜欢WPF!我没有看到在WinForms中实现相同功能和灵活性的优美/直接方式... 话虽如此,很遗憾看到WPF不再是微软内部的首选。实际上,一些人,包括“内部人士”表示,微软已经将重点从WPF转移,Silverlight现在成为Windows Phone 7应用程序框架(不再是取代Flash的东西)。

http://www.theregister.co.uk/2010/09/09/microsoft_html_5/

许多人,包括现任WPF领导者在内,否认了这一点,但我认为这可能有一些真实性。HTML5肯定会成为丰富(Web)客户端界面的“事实标准”。它与WPF重叠很多,并且还做了许多其他事情。它可以“轻松”扩展到非Web丰富客户端应用程序上,并且我相信微软将投资于此,以在Web、移动和Windows目标的开发工具方面处于领先地位。

如果我已经在进行WPF项目中,我不会担心被抛弃,但我也不会开始使用WPF,因为正如许多人已经说过的那样:放弃像WPF这样的东西并不简单,需要给出迁移路径并支持多年。

那么,在微软世界中替代WPF的当前选择是什么?我认为我们还没有一个,也许现在使用Silverlight中的子集是正确的方法。但是,在未来几年中,HTML5可能会成为WPF的替代品。


好的,因为我的“猜测”和Windows 8即将到来的内容,所以评分是-1?(冬天来了? :-) HTML5... WPF和Silverlight被放弃,支持那个疯狂的猜测...我一直认为-1不公平... - Loudenvier
这仍然是推测,尽管推理充分。如果可以的话,我现在会撤销-1,但它已经被锁定了。 - sourcenouveau
1
嘿,伙计!别介意!你的-1让我更深入地思考了这个问题。毕竟,我的观点变得更加冷静了,是的,这是一种推测。如果有一天没有人反对你的观点,那会让我感到担忧... :-) - Loudenvier

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