想放弃Winforms并开始使用WPF

时间:2011-02-04 22:33:28

标签: c# wpf

Windows Forms现在已经很老了,并且已被WPF取代。我已经看到很多关于数据绑定WPF布局的材料,使用应用程序的MVVM模式和一些很酷的动画来启动。

我认为是时候放弃Winforms并开始使用WPF了。完成最后一个自由项目后,我将开始专门为我的Windows客户端使用WPF。

我有权让客户使用更新的机器,因此在他们的机器上运行WPF不会有问题。 :)

试图抓住整个WPF是非常令人生畏的,我觉得如果我只是潜入,我可能继续以Winforms方式做事,而实际上WPF有一种更新,更简洁的做事方式。

你建议我从哪里开始?在使用WPF进行生产之前,您希望了解哪些事项?你会推荐什么书来教你WPF(必须是新的!从2007年开始没什么)?

6 个答案:

答案 0 :(得分:1)

我刚刚完成了同样的事情。我正在将一些应用程序移动到WPF。我决定暂时不咬MVVM,或任何VM。我只是想学习WPF的基础知识。我找到了SO,其他网站和this book非常有帮助。

顺便说一句,我发现它比我想象的容易得多。需要一些习惯,但我已经迷上了(XAML非常酷)。我相信最好的学习就是简单地跳进去开始做。

答案 1 :(得分:1)

我可以给出的主要建议是“忘记”你用winforms学到的东西。不要试图将你对winforms所做的事情应用到wpf ......架构是完全不同的,你可能陷入陷阱。

在学习的早期阶段可能不需要MVVM,但是它的方法使得WPF编码比没有它更容易。看看MVVM Light Toolkit并不是那么晚。这个MVVM框架非常简单,但提供了完整MVVM框架所需的功能,而且只提供了这一功能。

祝你好运,并且毫不犹豫地看看Silverlight。桌面应用程序和Web应用程序之间的界限一如既往。“

答案 2 :(得分:1)

我今天如何开始教某人WPF:

  1. 确保他们在XML中有扎实的基础。如果您不知道如何编辑XML文档以及诊断和修复标记中的问题,那么您将无法在WPF中取得进展。您尤其需要能够使用XML命名空间并理解命名空间前缀而不会吓坏。

  2. 创建一个示例应用程序,该应用程序创建一堆文本框并将它们绑定到实现更改通知的对象的属性。就我而言,数据绑定是WPF的基础技术。一旦你理解了绑定 - 实际上并不难理解 - 依赖属性和样式之类的设计变得更容易掌握。

  3. 向应用程序添加其他对象类型,并演示数据模板和模板选择的工作方式。

  4. 将样式(尤其是使用数据触发器的样式)添加到示例应用程序中。

  5. 将项控件添加到示例应用程序,并演示项面板和项容器样式的工作方式。也许需要花一点时间进入不同类型的面板。了解可观察集合和INotifyCollectionChanged的工作原理。此时,我可能会创建一个示例集合,使用ItemsControl并使用Grid作为其项目面板,以便我可以遍历项目容器生成和附加属性。

  6. 重构示例应用程序以将样式和数据模板移动到资源字典中,以演示资源字典的工作方式。

  7. 完成依赖属性的设计,将他们的设计与我们已经掌握的概念联系起来。为了表明这一点,我想添加一个模态对话框,其中包含整个应用程序的字体选择组合框。

  8. 将命令(使用RelayCommand模式)添加到后端对象,以演示命令的工作原理。

  9. 重构示例应用程序以使用用户控件。

  10. 逐步完成自定义控件模板。

  11. 不幸的是,我不知道有任何WPF教程可以解决这个问题。

答案 3 :(得分:0)

我认为最重要的是:

  1. Databinding,WPF最突出的功能之一,需要一段时间才能适应。
  2. Commands,不确定WinForms中是否存在类似内容......
  3. DataTemplates,根据数据动态创建大部分UI。
  4. Styling,如果您需要自定义控件。
  5. 如果你还没有能够编写XAML的话,你应该获得基本的XML知识(我不会在VS中使用设计器)。

答案 4 :(得分:0)

我衷心推荐Adam Nathan出版的WPF Unleashed一书。这就是我学习WPF的方法,多年后我仍然经常参考它。精彩的介绍,以清晰的顺序解释事物,逐步建立技能。

我回应上面所说的 - 忘记你在WinForms中所知道的很多东西。如果您试图将WPF视为“更漂亮的WinForms”,那么您将无法获得该平台的全部优势。学会“放手”并拥抱数据绑定(在WPF中更好),并且接受控件没有特定视觉效果的想法,那么你将真正自由地使用WPF。

答案 5 :(得分:0)

在开始任何编码之前,

'WPF in Action'是一本很好的书。它很容易理解,如果你有耐心,你可以在一两天内浏览整本书。它没有任何MVVM的东西,所以对于来自winforms背景的人来说,它很棒。

一旦你掌握了WPF概念,就可以进入MVVM。我在学习WPF所有东西时发现了两个很棒的MVVM资源

1. Video by Jason dolinger

2. MSDN article by Josh Smith