博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MvvmLight框架使用入门(一)
阅读量:5211 次
发布时间:2019-06-14

本文共 2330 字,大约阅读时间需要 7 分钟。

MvvmLight是比较流行的MVVM框架,相对较为简单易用。可能正因为简单,对应的帮助文档不多,对初学者就不够友好了。这里会用几篇随笔,就个人对MvvmLight的使用经验,来做一个入门的介绍。 

  第一步我们先找到并下载MvvmLight的最新版,我个人倾向使用NuGet。这里顺便吐槽一下,MvvmLight貌似并未在Github上创建项目,虽然作者对MS深深的爱让我感动,不过也不要排斥非MS系的东西嘛(喂,你自己还不是一样……) 

  VS2015 Community版,打开NuGet搜索MVVM,第一个就是。什么什么你还在用盗版!!还在搜Key!!Community版不要钱!不要钱!不要钱!重要的事情说三遍!!!而且功能甩以前的Express版十条街,完全可以正常开发使用(三哥CEO这一点还是做的不错的,崽卖爷田不心疼?)。 

        

  随便你下第一个MvvmLight,还是第二个MvvmLightLibs,后者是纯内裤类库。反正我们今天只介绍纯内裤类库。(前者会多帮你建一个MainPage的ViewModel,并创建好Binding啥的,俺们以后再说) 

  MvvmLight的本体一共有三个DLL:GalaSoft.MvvmLight.dll,GalaSoft.MvvmLight.Extras.dll和GalaSoft.MvvmLight.Platform.dll。另外依赖微软的一个DLL:Microsoft.Practices.ServiceLocation.dll(这货SimpleIoc要用到,不是俺们讨论的重点) 

  以下是本篇的精华,可能解释的还不够细致全面,但这不是第一篇么,后面几篇再做更为详细的介绍,举个例子敲段代码解释啥的。 

 

  GalaSoft.MvvmLight.dll程序集,包含5个命名空间: 

  Namesapce GalaSoft.MvvmLight:最顶层的命名空间,包含了MvvmLight的主体,最核心的功能都在这里 。

ICleanup 

接口。实现该接口的ViewModel需要在Cleanup方法里释放资源,特别是   -= event 

ObservableObject 

该类实现了INotifyPropertyChanged接口,定义了一个可通知的对象基类,供ViewModelBase继承 

ViewModelBase 

继承自ObservableObject,   ICleanup。将作为MvvmLight框架下使用的ViewModel的基类。主要提供Set和RaisePropertyChanged供外部使用。同时会在Cleanup方法里,Unregister该实例的所有的MvvmLight Messenger(在GalaSoft.MvvmLight.Messaging命名空间定义) 

 

  Namesapce GalaSoft.MvvmLight.Command 

RelayCommand 

提供了一个ICommand接口的实现 

RelayCommand<T> 

提供了ICommand接口的泛型实现 

  Namesapce GalaSoft.MvvmLight.Helpers。MvvmLight框架内部使用的一些辅助类,框架的使用者不直接接触该命名空间。 

  Namesapce GalaSoft.MvvmLight.Messaging。消息类命名空间,提供全局的消息通知。可以简单理解为全局的event事件,后面会花一些篇幅讲解使用。 

  Namesapce GalaSoft.MvvmLight.Views。和View结合较紧密,ViewModel通过依赖该命名空间下的类,来避免直接引用View,用以解耦代码对具体的平台的依赖。 

IDialogService 

对系统弹框消息的抽象。针对具体平台会在GalaSoft.MvvmLight.Platform程序集里分别实现 

INavigationService 

对页面导航的抽象,不同平台会有不同的实现 

  GalaSoft.MvvmLight.Extras程序集,仅包含1个命名空间: 

  Namesapce GalaSoft.MvvmLight.Ioc 。依赖注入使用的容器放在这个命名空间。

ISimpleIoc 

接口,IOC(Inverse Of Control)控制反转,我比较喜欢说依赖注入(Dependency Injection),简单可以理解为一个托管的容器,替你创建和管理对象。在MVVM中,一般是ViewModel

PreferredConstructorAttribute 

该类继承自Attribute,不常用。当ViewModel存在一个以上的构造函数时,可以通过他来指定SimpleIoc默认调用的构造函数 

SimpleIoc 

ISimpleIoc接口的实现。功能简单实用 

  GalaSoft.MvvmLight.Platform程序集,依赖平台具体实现的功能会放到这个程序集里,包含2个命名空间: 

  Namesapce GalaSoft.MvvmLight.Threading 

DispatcherHelper 

非UI线程操作UI线程时用到的帮助类,已针对各平台不同的写法做了封装。 

  Namesapce GalaSoft.MvvmLight.Views 

DialogService 

IDialogService接口的实现 

NavigationService 

INavigationService接口的实现 

转载于:https://www.cnblogs.com/Jeely/p/11077753.html

你可能感兴趣的文章
sql查询远程数据库的表的数据并填充到本地数据库的表
查看>>
YII缓存依赖的应用
查看>>
决策树在机器学习的理论学习与实践
查看>>
Biee 11g权限详解
查看>>
minggw 安装
查看>>
Jquery操作cookie,实现简单的记住用户名的操作
查看>>
[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
查看>>
PHP基础入门(二)
查看>>
[Luogu P3119] [USACO15JAN]草鉴定Grass Cownoisseur (缩点+图上DP)
查看>>
【原创】大数据基础之Zookeeper(4)应用场景
查看>>
18款在线代码片段测试工具
查看>>
20.C++- &&,||逻辑重载操作符的缺陷、,逗号重载操作符的分析
查看>>
静态变量数组实现LRU算法
查看>>
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>
css样式写一个三角形
查看>>
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>