另外,哪个框架更适合初学者学习?我发现在阅读了相当多的文章或教程视频之后,我仍然感到很迷茫。我可能会在某些地方理解,但仍然没有完全掌握。 Caliburn Micro是一个更小、更容易学习的框架吗?还是来自Microsoft的MVVM Toolkit、Unity/Prism(这些MS框架之间有什么区别)或MVVM Light?
在我看来,并不需要使用框架。MVVM只是一种做事情的方式。
首先,您只需要一个RelayCommand
类,以便将命令绑定到您的viewModel上。您可以从Josh Smith MVVM Foundation下载它。
然后,当您更加熟练时,可以添加其他类,例如:
ObservableObject:这是ViewModel类型或必须 提供属性更改通知的任何类型的基类。 它实现了
INotifyPropertyChanged
, 并且在调试构建中,将验证通过PropertyChanged
事件传递的所有属性名称都是有效的属性。 这个类曾经被称为ViewModelBase
。Messenger:Messenger类是在各种ViewModel对象之间传递消息的轻量级方法, 这些对象不需要知道彼此的存在。 这是基于Marlon Grech和Josh Smith创建的
Mediator
实现,在Marlon的博客上可以看到。
我的意见:
我几周前开始使用WPF / Mvvm模式,可以肯定地建议首先启动一个测试项目,阅读有关mvvm的大量信息,并尝试自己实现它(即使仅使用其他人的部分内容)。 实现一些东西,再阅读一些东西,回过头来改变一些东西,然后再阅读一些东西。
这样做前两周,你就能了解到它实际上是关于什么的,看到一些问题并找到一些解决方案等等。 基本上,这将让您在手指中理解mvvm思想,并获得一些实践经验。
然后,如果你愿意,你可以放弃你的测试项目,决定是否真正开始编写自己的代码或使用现有的工具包,并可能更加欣赏和理解现有工具包的工作方式。
我最终没有使用现有的工具包,而是使用了自己非常简单的实现方式,因为我不需要为我的项目添加太多复杂性,但我确实更加欣赏了一些在网络上讨论的实现方式。
编辑: 当我谈论“两周”时,我的意思是“两周的业余时间”,大约是25个真实小时;-)
在我看来,如果您正在学习WPF/MVVM,那么您必须彻底学习MVVM,并尝试从头开始构建框架(正如Eduardo所解释的那样)。
但是,如果您要开始进行商业项目或企业应用程序,则必须考虑使用一些已建立的框架,例如PRISM、Caliburn或MVVM Light Toolkit。
在我的第一个项目中,我们没有使用任何框架,我有点后悔。虽然没有出现任何问题,并且构建自己的框架并不是很困难(正如Eduardo所说),但我们花了很多时间和许多迭代来完成各种基类等。此外,由于我们完全不知道这些框架已经实现了各种功能,因此我们无法利用它们提供的各种优势。
我认为最好从一个“Hello World”应用程序开始。慢慢熟悉控件(列表视图、网格视图等),然后学习基本的WPF概念(绑定、模板、触发器等)。之后,您可以进入MVVM。