为什么要跳到WPF来制作商业应用程序,而不是使用Winforms
为什么要跳到WPF来制作商业应用程序,而不是使用Winforms
我们的团队有经验在Winforms和ASP.net项目上工作。
就像程序员交流中的其他程序员建议我们跳到WPF,而不是使用WinForms为我们的基于客户端的商业应用程序。
现在我开始开发我的第一个使用WPF的项目,这对我来说有点棘手,因为这是我第一次尝试使用它。
你能给出更深入的信息,为什么我们需要跳到WPF,而不是使用WinForms吗?
我需要说服我们的经理,我们可以在我们的客户端项目上深入研究WPF。
我们正在使用VS 2008。
我写了一个针对有Windows Forms背景并计划转移的开发人员的WPF与MVVM系列。
它介绍了一些WPF基础知识,展示了它如何让你以不同于Windows Forms的方式进行开发,包括引入(温和地)模板化、命令和其他概念,这些都与WPF中极好的数据绑定有关。
这将为WPF提供一个良好的介绍,并展示为什么它对于商业应用可能比Windows Forms更好。
-
挑选一个好的MVVM框架。我个人使用Microsoft Prism。其他选择请看这个StackOverflow问题。
-
路由事件仅适用于视图。例如,如果你想在多行文本框的文本变化时滚动到末尾。
-
命令用于绑定逻辑在视图模型(业务逻辑)中的事件...例如,提交按钮。
-
如果你的团队中有设计师,请让他们开始尝试使用Expression Blend并了解样式/布局。Expression Blend可以让你使用样本数据查看应用程序布局,而不必每次都运行它。
-
了解
ContentControl
和ContentPresenter
的不同之处。 -
了解
ItemsControl
的工作方式。在SelectedItem
、SelectedValue
和SelectedValuePath
之间存在差异。 -
看很多在线示例。例如Dr. Wpf,WPFTutorial.net,Josh Smith on WPF等。
-
如果你计划利用代码UI测试(测试实际用户界面),那么请确保命名重要的控件(大多数MVVM教程告诉你不需要命名任何控件)。如果你不打算进行编码UI测试,请不要命名你的控件,除非你需要从视图本身引用它们。
-
IValueConverter
和IMultiValueConverter
仅应用于将属性转换为与视图相关的项目。最常用的转换器是BooleanToVisiblity
转换器。 -
TargetNullValue
、FallbackValue
和StringFormat
在使用绑定时很重要。不要假设被绑定的数据始终可用和正确。 -
你几乎总是从你的视图模型中公开
ObservableCollection
或ReadOnlyObservableCollection
。很少会返回其他类型的集合,包括IEnumerable
。 -
在选择
BindingMode
时要小心:OneWay
,OneTime
,TwoWay
,OneWayToSource
(警告:OneWayToSource很棘手...它仍需要一个getter,因为它不是一个只写绑定)。 -
一个免费的好的调试工具是Snoop。它类似于运行WPF应用程序的DOM浏览器。一个更高级(不免费)的工具,更强大一些是Mole。
这就是我现在能想到的...哦,如果你遇到困难,StackOverflow是你的朋友 🙂