从Windows窗体转换到WPF

很长一段时间以来,我一直坚持使用Windows Forms开发(从VB6开始,继续到C#.NET 4.5),而且我几乎已经达到了Windows窗体可以执行的限制,都使用纯.NET ,以及与本机代码的特殊效果。

我知道WPF是未来(现在),而Windows Forms正在慢慢成为一个被弃用的技​​术。

我试图学习WPF和XAML,但是我被卡在了WPF的新devise师身上……与Windows窗体devise师相比,它似乎很难使用…当然…这只是一个学习曲线,在某个时候我打算继续学习WPF。

与此同时,我想知道是否有任何替代.NET的WPFdevise师,更适合Windows窗体开发人员?

我喜欢关于WPF的初学者文章的博客,有一些特别的可以帮助你:

  • 理解从WinForms切换到WPF时的心态变化
  • 你所说的这个“DataContext”是什么?
  • 一个简单的MVVM示例

总结一下,Winforms和WPF最大的区别在于,WPF中的数据层( DataContext )是您的应用程序,而Winforms中的UI层是您的应用程序。

换一种方式来看,使用WPF,您的应用程序由您创build的对象组成,您可以使用Templates和其他UI对象来告诉WPF如何绘制应用程序组件。

这与WinForms相反,你从UI对象中构build应用程序,然后为它们提供所需的数据。

正因为如此,devise人员实际上并没有太多的使用,因为你的应用程序组件是用代码devise的,而devise者只需要绘制一个用户友好的界面来反映你的数据类(通常是ModelsViewModels

个人而言,我更喜欢手动input所有的XAML,因为速度更快,不会像拖放WPFdevise器那样造成混乱,尽pipe我偶尔使用Designer来预览UI的外观喜欢。

所以要回答你的问题,是否有其他的WPFdevise者适合WinForms的开发者,我build议不要去寻找另一个devise者,而应该学习如何使用WPF。 使用WPF就像它的WinForms意味着你错过了什么让它如此伟大:)

那么虽然有些人不同意,我也build议不要使用VSdevise师。 至less不要创build一个接口。 如果您想要在不启动应用程序的情况下获得第一印象,那么至less只要使用StylesTemplates等复杂的东西,就会是一个很好的查看器。 但是,恕我直言,它的拖放结果只能用作原型,因此在不再需要时将其丢弃。

以下是我不使用它的一些重要原因。

  1. VSdevise人员正在处理修复边距和alignment(如果您使用布局控件,通常不需要),这意味着如果需求发生变化,您必须触摸很多控件。 如果你深入XAML和WPF机制,你可以创build一个应用程序,在外观和感觉上可以很小的修改。

  2. 由于devise者正在生成xaml,所以构图不是最佳的,并且UI可能performance不佳。 我没有衡量它,这只是一种感觉。

一个更好的select是MS Blend ,尽pipe起步是一切,但很容易。 它的拖放效果要比VSdevise者的效果好得多。
但它是一个非常强大的工具,它可以帮助你使用非常强大的元素来创build最先进的用户界面。 我build议至less参观一个短期的研讨会,以了解其机会。

回到你的问题,恕我直言,我想很多人都同意,让自己一本好书,如WPF释放和后来,如果你想了解更多的细节, WPF临 。 有很多与Winforms不同的function。 你不会通过使用任何devise师来了解他们。 我认为这是最好的方法。

另外请考虑一下有很多框架和库(如MVVM灯 , WPFToolkit ),这些已经解决了一些常见的问题。 所以没有必要重新发明轮子。

我知道这是一个古老的问题,但为了其他人的利益,我想我应该平衡一下 – 读一些其他答案,我觉得有些“不使用devise师“情绪来自不正确的使用。 这个教程是很好的让你去,并回答其他职位的一些批评。

例如,您可以通过右键单击,然后select“重置布局”,从类似于Winforms的基于边距的布局切换到更多的WPF样式样式,

这部影片的内容类似

我仍然更喜欢VS2010devise师的平衡 – VS2013拖放到TabItems **(我当前的项目使用了很多)时似乎有点错误 – 但是VS2013 Document Outline视图也可以让您在视图中移动,这可以是一个真正的优点。

实际上,为了充分利用WPF和xaml,您需要在devise器视图和xaml视图中合理stream畅地进行切换; 如果你回避devise师,你错过了一些可以帮助你的东西。

**编辑 – 虽然这似乎已经在VS 2013的更新3和VS14的预览中得到了改进,但迄今为止,我仍然有时会有奇怪的行为。

首先,在Visual Studio deisgner中的WPF(XAML)中,您应该始终使用xaml代码构buildUI,而不要拖放控件! 你需要保持你的代码清洁。 您可以使用Expression Blend来帮助您,通过拖放实现更多graphics导向,但它不是免费的。

这不是一个很大的学习曲线,但我认为你应该学习如何用手做xaml,而不是寻找替代方法。

我像你一样经历了这个过程。 之后,我正在教WPF公司的每个人。 有几个我学到的重要的经验教训,每个我认识的人都与WPF合作。

  1. 如果你在后面的代码中使用UI控件,那么你做错了。 你绝对不需要在后面的代码中处理UI控件。
  2. 您不需要可视化开发人员来点击它。 只要处理XAML,您的工作效率就会高得多。 使用复制/粘贴。 不要相信你的打字能力。 这将节省很多头痛。
  3. 把XAML当成一个放在数据上的窗口。 在你后面的代码正在改变数据。 在XAML中,您正在定义UI将如何解释数据。
  4. 转换器是惊人的。 一旦你得到了一个关键的转换器,你的生产力将火箭天高。 他们将接pipe隐藏或resize的控制事件处理程序的疯狂量,或者有关UI的事情,

它使得UI开发变得有趣。 特别是一旦你发现它喜欢与Asyc进程一起玩。 它真的带走了许多由Winforms引起的头痛。