2010-08-31 47 views
8

我看了看一些问题在这里堆栈溢出就像this & mix10 building your own mvvm framework启动WPF MVVM。使用框架?

我不知道作为一个初学者它能够更好地从头开始(但我从VID,它不建议听说的),或者使用一个框架

哪个更适合作为初学者框架学习?我发现在阅读了不少文章甚至是教程视频之后,我仍然很失落。我可能会在这里和那里得到零件,但仍然不存在。

caliburn micro一个容易学习的小框架?或者像MVVM工具箱或Unity/Prism这样的微软的东西(最新的所有MS框架顺便说一句)? MVVM Light?

+0

根据我们的[主题](https://stackoverflow.com/help/on-topic)指导原则,“**有些问题仍然存在问题,即使它们符合上面列出的某个类别:** ...问题要求我们*推荐或找到一本书,工具,软件库,教程或其他非现场资源*是脱离主题......“ – 2018-02-28 02:04:25

回答

10

我的$ 0.02:

我使用WPF /的MVVM模式在几个星期前,一个路径我可以肯定地建议首先开始测试项目,阅读了很多关于MVVM开始,并试图自己实现它(即使它只是使用其他人的东西的一部分)。 实施一些东西,阅读更多内容,回去改变内容,然后阅读更多内容。

在前两周做到这一点,您将会了解它实际上的全部内容,您会看到一些问题并找到一些解决方案等等。 基本上,这将获得您的手指mvvm想法,并给你一些实践经验。

然后,如果你喜欢,你可以扔掉你的测试项目,据此决定是否或不真正开始写自己的东西,或者使用现有的工具包,并可能有办法的现有工具包的工作更加了解和理解。

我最终没有使用现有的工具包,而是自己实现的非常简单的实现,因为我并不需要太多复杂的项目,但是我确实对我在互联网上讨论的某些实现获得了更多赞赏。

编辑: 当我谈到“两个星期”我的意思是“两个星期业余的”,这是大约25小时实时;-)

+0

我想我花了很多时间,我想abt 3天(〜= 24小时!!!哦,我相当失败)?相当完整的日子...但没有得到太多...是的,我确实尝试了caliburn微与他们的介绍你好世界的应用程序,成功......卡在他们的MEF部分......查看了不少视频。甚至棱镜的,仍然困惑...... – 2010-08-31 15:56:34

+2

这正是我建议不要以框架开始的原因。这些框架由于其庞大的规模和功能列表而可能非常过分。如果您对MVVM没有经验,那么您可能无法理解这些功能中99%的功能。 如果您自己开始编写一个非常简单的MVVM实现,您将遇到一些问题,并且您将了解到处理它们的不同方法。 通过这种方式,您将在一段时间后了解到框架将不再是黑魔法 - 然后您可以考虑继续构建自己的系统或切换到现有框架。 – Pygmy 2010-08-31 19:08:05

+0

我有同样的,我没有使用框架(至少不是我所知道的),只是复制了一些类的部分并使用它。我有一个合理规模的爱好项目(大约20K行),现在窗口更新变得复杂而没有MVVM。 – 2012-02-10 15:03:47

11

IMO,有没有必要使用一个框架。 MVVM只是一种做事的方式。

首先,您只需要一个RelayCommand类,因此您可以将命令绑定到您的viewModel。您可以从Josh Smith MVVM Foundation

下载它,然后当你越高级,你可以添加其他类,如:

  • ObservableObject:这是为了对 视图模型类型的基类,或任何类型的必须 提供属性更改通知。 它执行INotifyPropertyChanged ,并在调试版本中,将验证通过 PropertyChanged事件传递的所有属性名称 属性是有效的 属性。这个类曾经是 叫ViewModelBase

  • 信使:信使类是通过谁也不需要知道的 彼此不同的视图模型 对象之间 消息的轻量级的方式。这是基于 Marlon Grech和Josh Smith创建的 Mediator实现,如Marlon博客上的 所示。

0

我认为这将是更好的开始与Hello World应用程序。慢慢熟悉控件(listview,gridivew ...)以及基本的wpf概念(绑定,模板,触发器......)。之后,您可以转到MVVM。

3

从我的角度来看,如果你正在学习WPF/MVVM为自己,那么你必须深入学习MVVM并尝试从头构建一个框架(由爱德华解释)

但如果你已经开始用商业项目或企业应用程序,那么你必须考虑使用一些成熟的框架,如PRISM或Caliburn或MVVM Light Toolkit。

我的第一个项目中没有使用过任何框架,我有点后悔。虽然没有出错,但建立自己的框架并不是很困难(就像Eduardo所说的那样),但是花了我们很多时间,没有。在完成各种基类等方面的迭代。另外,我们无法利用这些框架中已经实现的各种东西(因为我们根本不知道它们)。