从Winforms迁移到WPF的最大障碍是什么?

时间:2020-03-06 14:29:41  来源:igfitidea点击:

几年来,我一直在C中开发Winforms应用程序,并且对将未来的开发转向WPF感兴趣,这主要是因为我一直在听到有关它的积极信息。但是,我想知道其他人迁移到WPF时必须克服哪些障碍。工作效率是否受到重大打击,或者我们发现有挑战性的任何特定问题?

解决方案

我不确定我能否给我们一个障碍,因为它完全脱离了WinForms。我的建议是得到亚当·内森(Adam Nathan)的WPF Unleashed,忘记我们所知道的有关使用任何以前的技术(Winforms,MFC,Java)构建UI的所有知识,然后重新开始。

如果我们尝试以其他任何方式进行操作,将导致完全沮丧。

ETA:我之所以说要从头开始,是因为有时候,如果一尘不染,学习新概念会更容易。过去,我发现,如果我尝试将知识从一种技术转移到另一种技术,那么在学习新知识方面我可能是我自己最大的敌人(例如,认为多年从事asmx Web服务使我无法阅读第一本书) WCF书的各章)。

在我使用WPF的有限经验中,更大的障碍包括对关于如何构建UI的思维模型进行全面检查,并因此需要学习新的术语。不过,可能其他人可以更轻松地调整模型。我可以看到来自网络世界最佳实践的人会发现过渡更加自然。

无疑对我的生产力造成了重大打击(如此重大,以至于我对去找雇主并说"让我用WPF代替Winforms来做到这一点"的想法还不满意)。我认为我永远也不会到达那里,但是我需要在个人时间通过实践来为这项技术带来更多的舒适感。

我没有遇到任何发现比其他任何问题更具挑战性的特定问题。我相信Adam Nathan的WPF Unleashed在其他地方也曾提到过,这绝对是一本值得一读的书。我也听说过查尔斯·佩佐尔德(Charles Petzold)的书有很多好处,尽管我个人不能为此提供担保。

  • 我们无法关闭抗锯齿功能。
  • 用户需要具有.net 3.x框架的Vista或者XP SP2.
  • 如果要使用Winforms,请注意Air Space(此处是D3D的一种解决方案)。

这些是我的主要问题。除此之外,我全力以赴,其方式远非外表。

好吧,对我而言,事实是WPF中的控件的行为与WPF中的控件完全不同(例如,在表单中定位时)。我们必须尽快了解差异,然后才能成功并高效地使用它。

Microsoft Learning网站上有一个有用的介绍,我相信如果我们拥有Microsoft Passport帐户,则可以免费获得该介绍https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=85488

如果WinForms应用程序定义了正确的对象模型体系结构(更像是MVC模型体系结构),我认为将UI迁移到WPF不会花费很多时间。
WPF按层次结构组织了可视元素(VisualTree),而RoutedEvents和RoutedCommands是WPF中的全新概念。显然还有更多诸如DataTemplate / Controltemplate之类的东西都在XAML级别上。所有这些都是实现强大的用户体验的非常强大而简单的方法。
因此,我的主要观点是,我们可以期望对象模型可以在WPF中重用(经过一些修改),而Winforms项目中的所有其他东西都需要取消。当然,其他所有层都不需要修改(通信层/数据层)

我在同一条船上。我一直在使用winforms进行编程。现在,我决定继续学习WPF,并开始使用WPF进行所有操作。对我而言,最难的事情是习惯于主要在UI而不是Ccode上使用XAML,并且WPF中的许多属性是不同的。 (IE要更改标签的文本,我们必须更改Content属性)。因此,我最大的问题是让自己摆脱winforms的束缚,并以一种全新的思维方式来开展工作。

即使有20多年的经验,我也发现WPF具有陡峭的学习曲线。我试图使用WPF来完成我的最新项目,但是缺少内置控件(例如NumericUpDown)以及使DataBinding与业务对象一起工作的问题迫使我退回到Winforms进行该项目,但我希望以后再使用它。当我在WPF和Winforms之间切换时,我编写的几乎所有代码(与设计人员生成的代码相比)都是可重用的。