为什么要跳转到业务应用程序的WPF而不是使用Winforms

时间:2012-03-09 01:52:42

标签: c# wpf winforms visual-studio-2008

我们的团队在Winforms和ASP.net项目上工作经验丰富。

正如程序员堆栈交换中的其他程序员一样,建议我为我们团队的下一个项目跳转到WPF,而不是将WinForms用于基于客户端的业务应用程序。

现在我开始使用WPF开发我的第一个项目,这对我来说有点棘手,因为它是我第一次尝试使用它。

你能否提供更深入的信息,为什么我们需要跳转到WPF而不是使用winforms?

我需要说服我们的经理,我们可以为我们基于客户的项目挖掘WPF。

我们正在使用VS 2008。

3 个答案:

答案 0 :(得分:8)

  1. 选择一个好的MVVM框架。我个人使用Microsoft Prism。有关其他选择,请查看this StackOverflow question

  2. 路由事件仅适用于视图。例如,如果要在文本更改时滚动到多行文本框的末尾。

  3. 命令用于绑定逻辑驻留在视图模型(业务逻辑)上的事件...例如,提交按钮。

  4. 如果您的团队中有设计师,请让他们开始使用Expression Blend并了解样式/布局。 Expression Blend允许您使用示例数据查看应用程序布局,而无需一直运行它。

  5. 了解The difference between ContentControl and ContentPresenter

  6. 了解ItemsControl的工作原理。有a difference between SelectedItem, SelectedValue, and SelectedValuePath

  7. 在网上查看很多exmaples。 Dr. WpfWPFTutorial.netJosh Smith on WPF

  8. 如果您打算利用代码UI测试(测试实际的用户界面),那么请确保命名控件(大多数MVVM教程告诉您不必命名任何控件) 。如果您不打算进行Coded UI测试,那么除非您需要从视图本身引用它们,否则不要命名控件。

  9. IValueConverterIMultiValueConverter只应用于将属性转换为与视图相关的项目。最常用的转换器是BooleanToVisiblity转换器。

  10. 使用绑定时,
  11. TargetNullValueFallbackValueStringFormat非常重要。不要假设被绑定的数据始终可用且正确。

  12. 您几乎总是会在视图模型中公开ObservableCollection<T>ReadOnlyObservableCollection<T>。您很少会返回任何其他类型的集合,包括IEnumerable<T>

  13. 请谨慎选择BindingModeOneWayOneTimeTwoWayOneWayToSource(警告:OneWayToSource很棘手......仍然需要一个getter,因为不是只写绑定。)

  14. 一个免费的好调试工具是Snoop。它类似于运行WPF应用程序的DOM资源管理器。更高级(而非免费)的工具更强大Mole

  15. 这就是我现在所能想到的......哦,如果你遇到障碍,StackOverflow就是你的朋友:)

答案 1 :(得分:4)

我写了一个series on WPF with MVVM专门针对具有Windows窗体背景的开发人员,并计划跳槽。

它介绍了WPF的一些基础知识,展示了它如何允许您以不同于Windows窗体的方式进行开发,包括引入(轻柔)模板,命令和其他与WPF中极其优越的数据绑定相关的概念。

这将为WPF提供一个很好的介绍,并向您展示为什么它比Windows Forms更适合业务应用程序。

答案 2 :(得分:2)

对于正在阅读并想知道“为什么是WPF”而不是Winforms的人来说,答案是WPF数据绑定使得它变得更容易。 MVVM真的只是为了帮助你充分利用它,但你并不严格需要它。

作为刚刚学习的人,我建议您只需将WPF转出,打开一个项目并开始执行您在WinForms中所做的操作,手动分配属性和处理事件。它会工作。但是,一旦你发现WPF会自动为你做这件事,你就会突然开始怨恨旧方式,并且你会跟上MVVM的快乐路径。