添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

MvvmLight:

ICleanup 实现了这个接口的ViewModel当不需要使用时,可以在Cleanup方法中去释放资源

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

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

以下两种通知的书写方式。Set方法会再属性赋值时自动为你调用RaisePropertyChanged进行通知。当然你也可以手动调用RaisePropertyChanged方法

MvvmLight.Command :

RelayCommand(或泛型) 提供一个ICommand接口(或泛型)的实现,用于与界面元素的响应处理绑定,以下示例为使用方法

在WPF中,并不是所有控件都有Command,例如TextBox,那么当文本改变,我们需要处理一些逻辑,这些逻辑在ViewModel中,没有Command如何绑定呢?

这个时候我们就用到EventToCommand,事件转命令,可以将一些事件例如TextChanged,Checked等事件转换成命令的方式,如下图

Messaging 消息类命名空间,提供全局的消息通知,使得wpf中view与view之间,view与viewmodel之间,viewmodel与viewmodel之间通信变得异常简单(注意,当此viewmodel被清理后注册的messaging会被自动释放)Messager类的主要交互模式就是信息接受和发送(可以理解为“发布消息服务”和“订阅消息服务”),接受者只能接受注册的消息类型,另外目标类型可以被指定,用Send<TMessage, TTarget>(TMessage message) 实现

在View和ViewModel中进行消息器注册,相当于订阅服务。包含消息标志、消息参数和消息执行方法。如下:

消息标志token:ViewAlert,用于标识只阅读某个或者某些Sender发送的消息,并执行相应的处理,所以Sender那边的token要保持一致

执行方法Action:ShowReceiveInfo,用来执行接收到消息后的后续工作,注意这边是支持泛型能力的,传递参数很方便

viewmodel和viewmodel之间通信,注意可以添加token参数,只有发送和接收者token一样才会去接收

Messenger.Default.Register(this,“Message”,ShowReceiveInfo);//接收者注册订阅消息
Messenger.Default.Send(SendInfo, “Message”);//发送者发布消息

Threading DispatcherHelper 非UI线程操作UI线程时用到的帮助类,通过向主线程的Dispatcher队列注册工作项,来通知UI线程更新结果

Dispatcher提供两个注册工作项的方法:Invoke 和 BeginInvoke。

这两个方法均调度一个委托来执行。Invoke 是同步调用,也就是说,直到 UI 线程实际执行完该委托它才返回。BeginInvoke是异步的,将立即返回。

通常,ViewModel 不从 DispatcherObject 继承。它们是执行 INotifyPropertyChanged 接口的 Plain Old CLR Objects (POCO)。

因为 ViewModel 是一个 POCO,它不能访问 Dispatcher 属性,因此需要通过另一种方式来访问主线程,以将操作加入队列中。这是 MVVM Light DispatcherHelper 组件的作用。

该类所做的是将主线程的调度程序保存在静态属性中,并公开一些实用工具方法,以便通过便捷且一致的方式访问。为了实现正常功能,需要在主线程上初始化该类。

最好应在应用程序生命周期的初期进行此操作,使应用程序一开始便能够访问这些功能。通常,在 MVVM Light 应用程序中,DispatcherHelper 在 App.xaml.cs 中进行初始化,App.xaml.cs 是定义应用程序启动类的文件。在 Windows Phone 中,在应用程序的主框架刚刚创建之后,在 InitializePhoneApplication 方法中调用 Dispatcher­Helper.Initialize。在 WPF 中,该类是在 App 构造函数中进行初始化的

完成了对 DispatcherHelper.Initialize 方法的调用后,DispatcherHelper 类的 UIDispatcher 属性包含对主线程的调度程序的引用。相对而言很少直接使用该属性,但如果需要可以这样做。但最好使用 CheckBeginInvokeOnUi 方法。此方法将委托视为参数。

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

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

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

MvvmLight.Ioc:

ISimpleIoc 接口,IOC(Inverse Of Control)控制反转,或者说依赖注入(Dependency Injection),简单理解为一个托管的容器,帮忙创建和管理对象。在MVVM中,一般是ViewModel

MvvmLight 使用ViewModelLocator使View和ViewModel之间不再直接引用,创建ViewModel实例的地方放在了ViewModelLocator中。App.xaml里将ViewModelLocator作为资源添加全局的Application.Resources里,使 ViewModel和View之间不再是紧密的一对一,有些ViewModel可以作为全局引用绑定,避免某些情况下频繁创建ViewModel,但是资源却没有很好的释放造成内存溢出。

ViewModelBase中的Set方法会在属性赋值时自动调用RaisePropertyChanged进行通知,将可复用的逻辑封装,减少工作量。Cleanup可以在不需要使用相关ViewModel的时候把相关的ViewModel释放掉

Simpleloc就是一个IServiceLocator。而ServiceLocatori这个是一个静态类是用来获取当前使用中的IServiceLocator号的。

Simpleloc的作用是,所有通过Simplelocl的Getlnstance方法创建的实例,都会自动从容器里自动组装

SimpleIoc: 一个非常简单的依赖注入容器。 Ioc(控制反转)

SimpleIoc.Default: SimpleIoc的默认实例

使用方法:

1.将自己的类注册到SimpleIoc

SimpleIoc.Default.Register(() => new MyClass());

2.把MainViewModel也注册到SimpleIoc

SimpleIoc.Default.Register();

3.在Main属性中通过ServiceLocator.Current.GetInstance()方法获取实例

public MainViewModel Main =>ServiceLocator.Current.GetInstance();

4.在MainViewModel的构造函数中匹配MyClass类

public MainViewModel(MyClass data)

WelcomeTitle = data.Name; MVVMLight几个主要api的功能mvvmlight是一种MVVM的实现,它提供了丰富的工具帮助我们完成MVVM模式的开发MvvmLight主体库和附加库MvvmLight:ICleanup 实现了这个接口的ViewModel当不需要使用时,可以在Cleanup方法中去释放资源ObservableObject该类实现了INotifyPropertyChanged接口,定义了一个可通知的对象基类,供ViewModelBase继承 ,ViewModelBase属于主体库,继承自Observabl
MVVM MVVM Light 介绍 MVVM 是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式, 主要 目的是 为了分离视图(View)和模型(Model)的耦合。 它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Presenter)模式与 WPF结合的应用方式时发展演变过来的一种新型架构。 立足于原有MVP框架并且把WPF的新特性糅合进去,以应对PC端开发日益复杂的需求变化。 结构如图所示:
MVVM Light 是一个开源的 MVVM (Model-View-ViewModel) 框架,用于开发 Windows 平台的应用程序。它的 主要 优点在于简洁易用、轻量级,支持 WPF、Silver light 、Windows Phone、Windows 8/8.1、Windows 10 UWP 等平台。 下面是一个简单的 MVVM Light 使用教程: 首先,安装 MVVM Light 框架...
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、 MVVM Light 是什么?二、使用步骤1.安装 MVVM Light 2.重新生成工程3.目录介绍总结 近期因为工作原因要使用到WPF相关内容,特此记录笔记,便于自己温故而知新,也同大家一起分享。 提示:以下是本篇文章正文内容,下面案例可供参考 一、 MVVM Light 是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.安装 MVVM Light 右键工程名–.
MVVM 是Model-View-ViewModel的简写。它是在MVP框架的基础上结合WPF的特性演变出来的一种新型架构框架。从 MVVM 这个名字就可以看出,该框架的目的 主要 是为了将页面和逻辑处理分离开始,适合团队协助时使用。 目前,网上有很多 MVVM 的开源框架,大多都不错。本人现在 主要 做UWP方面的项目,选择了 MVVM Light 框架,下面先介绍一下 MVVM Light 框架添加到UWP项目中
一、 MVVM 介绍 MVVM (Model-View-ViewModel)—— 类似于MVC、MVP的设计模式(非框架级别),由MVP(Model-View-Presenter)模式与WPF结合的应用方式发展演变过来的一种新型架构。 主要 目的是分离视图(View)和模型(Model)的耦合。 1、结构: 2、优点: (1)低耦合:视图(View)独立于Model的变化,一个ViewModel可以绑定到不同的View上。View变化时Model可以不变,Model变化时View可以不变。
本篇我们着重介绍ViewModelBase,演示Set和RaisePropertyChanged方法的使用,以及就Cleanup方法释放资源展开讨论。 ICleanup 接口。 实现该接口的ViewModel需要在Cleanup方法里释放资源,特别是-= event ObservableObject 该类实现了INotifyPropertyChanged接口,定义了一个可通知的对象基类,
文章目录写好Alter 功能 块后,在alter.show()语句前加入:然后在AndroidManifest.xml中加入权限:下面进行简单的解释: 写好Alter 功能 块后,在alter.show()语句前加入: alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 注:alter为AlertDialog类...