.net 从Winforms移动到WPF

.net 从Winforms移动到WPF,.net,wpf,winforms,.net,Wpf,Winforms,我知道这可能是一个主观问题,但我想知道您的经验以及Winforms程序员切换到WPF并编写简单应用程序所需时间的估计 我开始使用.Net Winforms构建windows应用程序。由于客户关心UI,我认为最后切换到WPF是个好主意。 我是WPF的新手,除了一些常识外,几乎什么都不知道 该应用程序是以SQL Server Express作为后端数据库的单用户桌面应用程序,将使用强类型数据集或亚音速作为其DAL。将使用一些基本的UI元素(DataGridView、文本框、按钮等)。正如你所看到的,

我知道这可能是一个主观问题,但我想知道您的经验以及Winforms程序员切换到WPF并编写简单应用程序所需时间的估计

我开始使用.Net Winforms构建windows应用程序。由于客户关心UI,我认为最后切换到WPF是个好主意。
我是WPF的新手,除了一些常识外,几乎什么都不知道

该应用程序是以SQL Server Express作为后端数据库的单用户桌面应用程序,将使用强类型数据集或亚音速作为其DAL。将使用一些基本的UI元素(DataGridView、文本框、按钮等)。正如你所看到的,这根本不是一个复杂的项目。这就是为什么我第一次考虑在这个项目中使用WPF

我不知道Winforms开发人员需要多长时间才能习惯WPF。
考虑到WPF的学习曲线,您认为我应该使用WPF开始这个项目吗?

另外,该项目应该在大约2个月内准备好,我学习速度很快。

您可以使用WPF轻松快速地编写“WinForms-like”(事件处理程序、代码隐藏等)代码,它会很好地工作。但这并不是真正的“WPF方式”,它将限制您未来的灵活性。

在开发了几年Windows.Forms之后,我最近在WPF中创建了第一个更复杂的应用程序(即不是企业,而是hello world)。我想说的是,这种转换并不太复杂。您必须学习新的类和一些新的编码样式(例如更多的XAML定义、不同的数据绑定等等)


总的来说,如果应用程序不太复杂,你应该在一周内学会很多东西,并且当你的项目在2个月内完成时,你应该非常擅长WPF。

就像丹说的,使用
画布,你非常接近winforms,但那很糟糕。
编辑:在我忘记之前,不要期望DataGrid与Winforms DataGrid类似。我倾向于在简单的情况下使用ListView(带有GridView布局)来代替它


为陡峭的学习曲线准备一本好的(即面向实际的)书。我推荐亚当·内森(Adam Nathan)的书,它很快就可以教你一些重要的概念。

关于WPF和Winforms的一个很好的比较


许多人发现这是一个巨大的飞跃。估计需要多长时间是困难的,因为这取决于你来自哪里。Scott Hanselman在学习WPF时发表的关于他的经历的博客文章可能会让你受益匪浅。它将引导您从头到尾地完成开发过程,最终结果()可供下载。

关于winforms和WPF开发,有两件事(对我来说)很有趣

  • 支持并采用模型、视图、视图模型(MVVM)方法进行开发。尽管我在过去使用过MV*方法,但数据绑定、路由事件/命令等概念似乎很自然地适用于MVVM模式。在我看来,由于关注点的分离,这使得编码更加容易

  • MVVM方法自然地将您的UI与数据/业务逻辑分开——然而,WPF更进一步,将您的UI与它的实际外观分开。MSFT表示,他们认为设计师应该是设计师,开发者应该是开发者,这两种技能有时会混合,但很少。因此,他们在WPF中的样式设计方法方面做得很好,允许开发人员快速制作出一个(难看的)UI,然后将其交给一个设计师团队,由他们清理并使其看起来漂亮——所有这些都不会影响底层代码。(2009年MIX讨论)


我认为您可能做的最糟糕的事情是尝试将winforms代码隐藏到WPF开发方法中。首先,因为您将要阅读的大多数(最近的)材料都面向MVVM模式,其次,因为您会发现在MVVM模型中,应用程序的开发和维护要容易得多。

@Kamyar,在过去一年左右的时间里,我花了大约3个月的时间在各种WPF项目上(主要是内部工具,但对于生产子系统来说只有几周时间)直到最近的项目结束时,我才觉得自己终于“做对了”,可以这么说(尽管我确信再过几个月,我会认为它有相当大的缺陷)。这是向理解/使用单元测试和模拟的更大整体转变的一部分,这引发了一系列理解,有助于澄清WPF架构背后的推理。+1表示“理解的级联”。当WPF最终点击时,我也发生了这种情况。我现在学习了WPF,是一名更好的程序员。