.net 正在启动WPF MVVM。使用框架?

.net 正在启动WPF MVVM。使用框架?,.net,wpf,mvvm,frameworks,.net,Wpf,Mvvm,Frameworks,我在stack overflow上看了一些问题,比如 我想知道作为一个初学者,从零开始(但我从视频中听到,不推荐)或使用框架是否更好 作为初学者框架,哪一个更适合学习?我发现在读了很多文章甚至教程视频之后,我仍然很迷茫。我可能到处都有零件,但仍然没有 一个较小的易于学习的框架?或者微软的MVVM工具包或Unity/Prism(顺便说一句,所有这些MS框架的区别是什么)?MVVM灯?0.02年款: 我在几周前就开始使用WPF/Mvvm模式,我可以肯定地推荐一种方法,那就是首先启动一个测试项目,阅读

我在stack overflow上看了一些问题,比如

我想知道作为一个初学者,从零开始(但我从视频中听到,不推荐)或使用框架是否更好

作为初学者框架,哪一个更适合学习?我发现在读了很多文章甚至教程视频之后,我仍然很迷茫。我可能到处都有零件,但仍然没有

一个较小的易于学习的框架?或者微软的MVVM工具包或Unity/Prism(顺便说一句,所有这些MS框架的区别是什么)?MVVM灯?

0.02年款:

我在几周前就开始使用WPF/Mvvm模式,我可以肯定地推荐一种方法,那就是首先启动一个测试项目,阅读大量关于Mvvm的内容,并尝试自己实现它(即使只是使用其他人的部分内容)。 实现一些东西,多读一些,回去改变一些东西,然后再多读一些

在头两周内这样做,你就会了解它的真正意义,你会发现一些问题,找到一些解决方案,等等。 基本上,这将让mvvm的想法在你的手指,给你一些实际操作的经验

然后,如果您愿意,您可以扔掉您的测试项目,决定是否真正开始编写您自己的东西或使用现有的工具包,并且可能对现有工具包的工作方式有更多的欣赏和理解

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

编辑:
当我谈论“两周”时,我指的是“两周的业余时间”,大约是25个真实小时;-)

IMO,不需要使用框架。MVVM只是一种做事的方式

首先,您只需要一个
RelayCommand
类,这样就可以将命令绑定到viewModel。你可以从

然后,当您更高级时,可以添加其他类,如:

  • ObservieObject:这是用于 ViewModel类型,或任何必须 提供属性更改通知。 它实现了INotifyPropertyChanged
    
    并且,在调试构建中,将验证
    所有属性名称都通过
    
    PropertyChanged
    事件有效 财产。这个班过去是 调用了
    ViewModelBase

  • Messenger:Messenger类是一种轻量级的传递方式 不同ViewModel之间的消息 不需要知道的对象 彼此这是基于
    Mediator
    由创建的实现 Marlon Grech和Josh Smith,如图所示 在马龙的博客上


我认为最好从hello world应用程序开始。慢慢地熟悉控件(listview、gridivew…),然后熟悉基本的wpf概念(绑定、模板、触发器…)。在这之后,您可以继续学习MVVM。

在我看来,如果您要自己学习WPF/MVVM,那么您必须彻底学习MVVM,并尝试从头开始构建框架(如Eduardo所解释的)

<>但是如果你从一个商业项目或企业应用开始,你必须考虑使用诸如PRISM或CalBurn或MVVM轻工具包之类的已建立的框架。p>
我们在我的第一个项目中没有使用任何框架,对此我有点遗憾。虽然没有出现任何问题,构建自己的框架也不是很困难(正如Eduardo所说),但在最终确定各种基类等方面,我们花费了大量时间和大量迭代。此外,我们无法利用其中一些框架中已经实现的各种功能(因为我们根本不知道这些功能).

我想我花了相当多的时间,我想大约3天(~=24小时!!!哦,我真是个失败者!)?整整一天。。。但是我没有得到太多。。。是的,我尝试了caliburn micro和他们的简介hello world应用程序,成功。。。卡在他们的MEF部分。。。看了不少视频。即使是prism,但仍然很困惑……这正是我建议不要从框架开始的原因。这些框架可能会过于臃肿,因为它们的规模和功能列表太大了。如果您没有使用MVVM的经验,您可能无法理解这些特性中99%的用途。如果您自己开始编写一个非常简单的MVVM实现,您将遇到某些问题,并且您将了解解决这些问题的不同方法。这样你就可以学到一点,框架不再是黑魔法——然后你可以考虑继续建立你自己的系统或者切换到一个现有的框架。我有相同的,我不使用一个框架(至少不是我知道的),只是拷贝了一些部分的类并使用它。我有一个相当大的爱好项目(大约20K行),现在没有MVVM,窗口更新变得很复杂。根据我们的指导,“有些问题仍然是离题的,即使它们属于上面列出的类别之一:…要求我们推荐或查找书籍、工具、软件库、教程或其他离题资源的问题是离题的…”