MvvmLight框架使用入门(一)
来源:互联网 发布:易语言股票助理源码 编辑:程序博客网 时间:2024/06/05 17:10
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接口的实现
原文地址:http://www.cnblogs.com/manupstairs/p/4890300.html
- MvvmLight框架使用入门(一)
- MvvmLight框架使用入门(二)
- MvvmLight框架使用入门(三)
- MvvmLight框架使用入门(四)
- MVVMLight使用(一)
- 使用MVVMLight 开发 Windows 10 App(一)
- MVVM模式结合MVVMlight框架的应用(20)
- 使用 MVVMLight 绑定数据
- 使用 MVVMLight 命令绑定
- 使用 MVVMLight 消息通知
- MvvmLight(一)准备和介绍
- MVVMLight
- 第二部分 TR0217插件框架使用指导(一)-入门
- OrmLite框架 —— OrmLite 入门使用(一)
- OrmLite框架 —— OrmLite 入门使用(一)
- Bootstrap-css前端框架(一、入门使用)
- Spring框架入门(一)
- structs2框架入门(一)
- 【MFC_消息】WM_DRAWITEM与DrawItem()的讨论
- ajax完整解析
- 块级元素居中
- view的事件分发机制
- 正则表达式说明
- MvvmLight框架使用入门(一)
- IDEA配置jdk
- log4j的作用
- 奇葩的Android Bug: Unable to start service Intent
- float和Float的问题,错误原因:cannot be translated into a null value
- iOS "dyld`dyld_fatal_error: -> 0x12000d088 <+0>: brk #0x3"错误
- 安卓应用的版本更新
- [LeetCode]150. Evaluate Reverse Polish Notation
- Socket编程+Google Protocol搭建简单的客户端服务器方式2