克服从WinForms迁移到WPF有什么更大的障碍?

我已经用C#开发了几年的Winforms应用程序,并且对将来的WPF发展感兴趣,主要是因为我已经听到了有关它的积极的事情。 但是,我想知道在他们迁移到WPF时,其他人需要克服哪些障碍。 您的工作效率是否受到重大打击,或者您遇到哪些具有挑战性的特定问题?

在Windows 8中序列化XML数据(增量存储)

Windows 10不能在Composer中使用适用于PHP v3的AWS开发工具包

如何检测Java应用程序(Windows操作系统)中的重绘区域?

如何使用C在控制台上打印UTF-8字符

Jupyter ImportError:没有命名的模块

我不确定我只能给你一个障碍,因为这是一个完全离开WinForms。 我的建议是得到Adam Nathan的WPF Unleashed,忘记了关于使用任何以前的技术(Winforms,MFC,Java)构建UI的所有知识,并重新开始。

如果您尝试以其他方式进行,将导致彻底的沮丧。

ETA:我之所以说从头开始是因为有时候,如果你用一块干净的石板,学习新的概念会更容易。 在过去,我发现如果我试图将技术知识从技术转移到技术上,我就可能成为自己最大的敌人(例如,认为多年来一直使用asmx网络服务使我无法阅读第一对WCF书的章节)。

在我对WPF公认的有限的经验,更大的障碍包括我的心智模型,如何建立UI和需要学习的新术语的完整彻底检查。 尽管如此,其他人可能更容易调整模型。 我可以看到来自网络世界最佳实践的人会如何发现过渡更加自然。

对我的生产力肯定有重大的打击(如此重要,以至于我不太愿意去找我的老板说“让我用WPF来代替Winforms”)。 我不认为我永远不会到达那里,但是我需要在我个人的时间里通过实践来发展一些额外的技术。

我没有遇到任何我发现比其他问题更具挑战性的问题。 我相信Adam Nathan的WPF Unleashed在其他地方被提及,这绝对是值得一读的。 我也听说过Charles Petzold的 书 ,尽管我不能亲自担保。

微软学习网站有一个有用的介绍,我相信如果你有一个微软Passport帐户免费提供https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=85488

您无法关闭防别名 。

您的用户需要使用.net 3.x框架的Vista或XP SP2。

如果你想使用winforms,请注意空间( 这里是D3D的一个解决方案)。

这些是我的主要问题。 除此之外,我完全赞成,它的方式不仅仅是看起来。

如果WinForms应用程序已经定义了适当的对象模型体系结构(更像MVC模型体系结构),我认为不需要太多时间将您的UI迁移到WPF。 WPF组织了视觉元素(VisualTree),RoutedEvents和RoutedCommands是WPF中全新的概念。 显然有更多的东西像DataTemplate / Controltemplate都在XAML级别。 所有这些都使得一个非常强大和简单的方法来实现卓越的用户体验。 所以我的主要观点是你可以期望只有你的对象模型可重用(在一些修改)在WPF和Winforms项目的其他一切需要抛出。 当然,所有其他层不需要修改(通信层/数据层)

我在同一条船上 我一直在使用winforms编程这么久。 现在我决定继续学习WPF,并开始做所有事情。 对我来说最困难的事情是习惯于使用XAML而不是C#代码,而WPF中的很多属性都是不同的。 (IE – 要更改标签的文本,您必须更改内容属性)。 所以我最大的问题就是把我的脑袋从winforms中解放出来,变成一种全新的思维方式。

那么,对我来说,事实上WPF中的控件与WPF中的控件有很大不同(例如,当涉及到表单中的定位时)。 您必须尽快了解差异,以便成功和高效地使用它。

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

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...