首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Windows窗体上使用WPF更好吗?

在Windows窗体上使用WPF更好吗?
EN

Stack Overflow用户
提问于 2009-03-12 21:49:05
回答 11查看 32.7K关注 0票数 21

对于一个全新的应用程序,使用WPF胜过Windows窗体更好吗?我以前使用过Windows窗体,但不太使用WPF。据我所知,WPF是Windows窗体的继任者,对吗?

该应用程序将托管具有大量自定义控件的DirectX窗口(不是WPF3D,而是Managed DirectXSlimDX)。

编辑:该应用程序是与3D相关的应用程序,编辑器,如modo

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-03-12 21:54:06

-编辑2

考虑到你正在尝试制作一个像你展示的那样的编辑器,我建议你更多地使用WPF。我目前的项目也有许多这样的特性,我们决定将WPF与Direct3D内容组合在一起的能力非常强大。这是很好的能够渲染你的场景到任何东西-不仅仅是一个矩形窗口。在WinForms中,你基本上只能使用一个矩形,而且那里的空域也有问题(虽然很微妙,但当菜单拉到你的hwnd上时会出现闪烁问题,等等)。带有D3DImage的WPF compositor摆脱了所有这些问题,并允许您发挥想象力来构建非常灵活的UI。可以在WPF3D对象一侧实时渲染场景,或者直接在D3D场景上使用WPF控件,而不是尝试在d3d中执行图形用户界面,等等。

-原创

如果你打算托管DX,你可能会考虑它-特别是因为它让你能够用你的UI进行场景合成,并且如果你使用D3DImage,就不会有空域问题。

这确实适用于SlimDX和WPF。

--编辑

有关在Winforms中使用Direct3D的缺点以及集成WPF/DX的优点的更多信息,请参阅:

MSDN Article on Airspace

Codeproject arcticle on intro to D3DImage

票数 12
EN

Stack Overflow用户

发布于 2009-03-12 22:00:15

我们大约在9个月前就解决了这个问题。我们决定使用WPF,到目前为止,我们对这个决定很满意。是的,有一个学习曲线。这是相当可观的,特别是来自WinForms,在那里你有太多的东西要忘记。我还建议您可以访问设计器,否则您的应用程序可能会看起来有点破旧。也要为一些WPF陷阱做好准备,它们会让你花几个小时抓挠你的头,问‘为什么这这么难’。

但WPF领先了一步。数据绑定、模板化和对窗口外观的完全控制让你认为WinForms本来就应该是这样的。

哦,是的,准备好为一些缺失的控件支付几美元。缺少一些东西,比如日期选择器和树控件上的复选框(您实际上可以将其模板化,但在这方面它不像winforms那么简单)。谢天谢地,3.5 SP1现在包括了一个网格控件。

我确信我错过了更多,但这就是我能想到的。

祝好运!

票数 19
EN

Stack Overflow用户

发布于 2011-06-12 11:46:39

我知道这是一个古老的帖子,但我认为这仍然是一个有效的问题。

我在我工作的第一家公司用了3年的WinForms。那里有一些非常优秀的程序员,他们找到了一些非常聪明的方法来做一些非常酷的事情。WinForms经受住了时间的考验。它是一个可靠、可靠、高效的平台。许多人以及大大小小的公司已经使用WinForms多年了,而且这项技术已经一次又一次地证明了自己。即使你是微软,像这样的惰性也很难克服。

不过,WPF绝对是未来的发展方向。微软通过制作Visual Studio2010和Expression Blend等产品明确了这一点。(在将WPF用于内部项目时,Microsoft被迫修复了许多问题,例如字体呈现和速度问题,这些问题最初阻止了人们采用它。Visual Studio2010表明WPF早就可以投入生产了。

那么,用WinForms还是WPF编写你的程序更好呢?答案是: WPF。我这么说有两个原因。首先,因为微软在内部支持它,我们可以假设它将存在很长一段时间。微软向我们展示了它是下一个选择的工具,这让我想到了下一个观点:它已经变得比WinForms更好(我采访过的一些人不同意这一点,但这是事实,而且每天都变得越来越明显)。WPF有许多WinForms (可能)永远不会提供的功能,比如集成的支持惊人的数据绑定,以及基于时间轴的动画,可以轻松地为你的应用程序制作令人惊叹的主题,并将有设计师恳求做出改变。WPF有更多的东西是无法用评论来描述的,但对我来说这是两个重要的东西:)

这就是说,我知道在WPF中没有什么是在WinForms中做不到的。你可以用任何语言做任何事情,如果你非常想做的话。问题是,WinForm会让你在谷歌上搜索别人是如何做了很酷的事情,WPF内置了对微软认为是Windows未来的所有功能的支持,并将它们放在你的指尖上。

随着时间的推移,人们将习惯于直接构建到Windows中的新功能,并期望它们在他们使用的所有应用程序中都可用。这将达到这样的地步,任何不支持它们的东西都会让人感觉笨拙,不太有用,看起来也不值得花钱。(我认为Touch集成就是最明显的例子。尽管有一些可以夹在显示器上并模拟鼠标的触摸屏解决方案,但在任何计算机上,触摸屏技术都取得了长足的进步,而且随着Windows8模糊了桌面设备和移动设备之间的界限,人们很可能希望以一种如果应用程序使用WinForms就很难实现的方式来使用应用程序。)

我相信,迟早,对WinForms的支持和开发将停止,所有留下自己的人都将被迫迅速地迁移。然而,有太多的程序依赖于WinForms,微软无法在不久的将来放弃它。谁知道会发生什么呢。也许WinForms之于微软,就像安腾处理器之于英特尔,尽管有更好的解决方案可用,但英特尔拥有足够的用户来维持它的发展。( http://arstechnica.com/business/news/2011/06/ask-ars-why-itaniumask-ars-with-xeons-improvement-why-bother-with-itanium.ars )

所以我的建议是:对于新的开发,切换到WPF。派一些员工参加培训课程,或者让他们玩一段时间,这样他们就可以对技术有更好的感受。学习曲线将是陡峭的,但这样做将增加您的团队的技能,因为通过学习WPF,他们也将很好地学习SilverLight,这与WPF非常相似,对于熟悉WPF的人来说能够快速学习,但它是为web而不是桌面设计的。这是有价值的,因为用WPF重写的应用程序将更容易在以后转换为Web应用程序。WPF是新的,但它的出现是有原因的,而不仅仅是为了让人们学习其他东西。它的设计目的是使应用程序更加用户友好、直观和可移植。它的设计目的是帮助开发人员使他们的应用程序适应计算机的新时代。

关于用WinForms编写的应用程序:我认为可以有把握地认为,仅仅因为WinForms获得了大量的支持,它在相当长的一段时间内仍然会受到支持。我建议让您的团队熟悉WPF,并慢慢开始将您的应用程序迁移到WPF。花点时间在微软允许的范围内,不要着急,但永远要记住,无论如何,WinForms的日子已经结束了,虽然没有人能确定会发生什么,但一旦有理由,对遗留产品的支持就会被放弃。即使WinForms应用程序被保留了很多年,重要的是要记住,时代在变化,我们都需要随着它们而改变。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/640633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档