我已经在C#中开发Winforms应用程序已有几年了,并且一直对将未来的发展转向WPF感兴趣,主要是因为我听到了积极的事情。但是,我想知道其他人在迁移到WPF时必须克服哪些障碍。是否会对您的工作效率或您遇到的任何特定问题产生重大影响?
答案 0 :(得分:11)
我不确定我能给你一个障碍,因为它完全背离了WinForms。我的建议是让Adam Nathan的WPF Unleashed,忘记你用任何以前的技术(Winforms,MFC,Java)构建UI的所有知识,然后再从第一个开始。
如果你尝试以任何其他方式这样做,那将会引起极大的挫败感。
ETA:我之所以说从头开始是因为有时候如果你干净利落地学习新概念会更容易。在过去,我发现如果我尝试将技术从技术转移到技术(例如,认为多年来使用asmx网络服务使我无法阅读第一对夫妇),在学习新东西方面,我可能成为自己最大的敌人。 WCF书的章节。)
答案 1 :(得分:5)
在我对WPF的有限经验中,更大的障碍包括对我的心理模型进行彻底检查,了解如何构建UI以及由此产生的新术语。但是,其他人可能更容易适应模型。我可以看到,来自网络世界最佳实践的人如何能够更自然地发现这种转变。
我的工作效率肯定受到了极大的打击(非常重要的是,我对于找到我的雇主并说“让我用WPF而不是Winforms来做这件事”的想法还不太满意)。我不认为我永远不会到达那里,但我需要通过在个人时间练习来提高技术水平。
我没有遇到任何我发现比其他问题更具挑战性的问题。我相信Adam Nathan的WPF Unleashed在其他地方被提及过,这绝对值得一读。我也听说过有关Charles Petzold's book的好消息,但我不能亲自担保。
答案 2 :(得分:1)
这些是我的主要问题。除此之外,我都是为了它,它的方式不仅仅是外观。
答案 3 :(得分:1)
Microsoft Learning网站有一个有用的介绍,如果您拥有Microsoft Passport帐户,我认为可免费提供https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=85488
答案 4 :(得分:1)
如果WinForms应用程序定义了正确的对象模型体系结构(更像是MVC模型体系结构),我认为将UI迁移到WPF并不会花费太多时间。 WPF已经组织了其可视化元素(VisualTree),而RoutedEvents和RoutedCommands在WPF中是全新的概念。显然有更多像DataTemplate / Controltemplate这样的东西都在XAML级别。所有这些都是实现卓越用户体验的一种非常强大而简单的方法。 所以我的主要观点是,你可以期待你的对象模型在WPF中可以重复使用(经过一些修改),而Winforms项目中的其他所有东西都需要抛弃。 Ofcourse all其他图层无需修改(Comunication Layer / DataLayer)
答案 5 :(得分:1)
我在同一条船上。我已经使用winforms编程了很长时间。现在我决定我将学习WPF并开始用它做所有事情。对我来说最困难的是习惯使用XAML主要用于UI而不是C#代码,并且WPF中的许多属性都不同。 (IE - 要更改标签的文本,您必须更改Content属性)。因此,我最大的问题是让我的脑袋脱离winforms并将其变成一种全新的思维方式。
答案 6 :(得分:0)
嗯,对我而言,WPF中的控件与WPF中的控件行为有很大不同(例如,当涉及到窗体中的定位时)。您必须尽快理解差异,才能成功且高效地使用它。
答案 7 :(得分:0)
即使有20多年的经验,我发现WPF的学习曲线也很陡峭。我尝试使用WPF进行我的最新项目,但是缺少内置控件(例如NumericUpDown)以及让DataBinding与业务对象一起工作的问题迫使我回到Winforms这个项目,但我希望以后做项目它。当我在WPF和Winforms之间切换时,我写的几乎所有代码(与设计者生成的代码相比)都是可重用的。