我们的团队在Winforms和ASP.net项目上工作经验丰富。
正如程序员堆栈交换中的其他程序员一样,建议我为我们团队的下一个项目跳转到WPF,而不是将WinForms用于基于客户端的业务应用程序。
现在我开始使用WPF开发我的第一个项目,这对我来说有点棘手,因为它是我第一次尝试使用它。
你能否提供更深入的信息,为什么我们需要跳转到WPF而不是使用winforms?
我需要说服我们的经理,我们可以为我们基于客户的项目挖掘WPF。
我们正在使用VS 2008。
答案 0 :(得分:8)
选择一个好的MVVM框架。我个人使用Microsoft Prism。有关其他选择,请查看this StackOverflow question。
路由事件仅适用于视图。例如,如果要在文本更改时滚动到多行文本框的末尾。
命令用于绑定逻辑驻留在视图模型(业务逻辑)上的事件...例如,提交按钮。
如果您的团队中有设计师,请让他们开始使用Expression Blend并了解样式/布局。 Expression Blend允许您使用示例数据查看应用程序布局,而无需一直运行它。
了解The difference between ContentControl
and ContentPresenter
。
了解ItemsControl
的工作原理。有a difference between SelectedItem
, SelectedValue
, and SelectedValuePath
。
在网上查看很多exmaples。 Dr. Wpf,WPFTutorial.net,Josh Smith on WPF等
如果您打算利用代码UI测试(测试实际的用户界面),那么请确保命名控件(大多数MVVM教程告诉您不必命名任何控件) 。如果您不打算进行Coded UI测试,那么除非您需要从视图本身引用它们,否则不要命名控件。
IValueConverter
和IMultiValueConverter
只应用于将属性转换为与视图相关的项目。最常用的转换器是BooleanToVisiblity
转换器。
TargetNullValue
,FallbackValue
和StringFormat
非常重要。不要假设被绑定的数据始终可用且正确。
您几乎总是会在视图模型中公开ObservableCollection<T>
或ReadOnlyObservableCollection<T>
。您很少会返回任何其他类型的集合,包括IEnumerable<T>
。
请谨慎选择BindingMode
:OneWay
,OneTime
,TwoWay
,OneWayToSource
(警告:OneWayToSource很棘手......仍然需要一个getter,因为不是只写绑定。)
一个免费的好调试工具是Snoop。它类似于运行WPF应用程序的DOM资源管理器。更高级(而非免费)的工具更强大Mole。
这就是我现在所能想到的......哦,如果你遇到障碍,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的快乐路径。