重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了MVVM中怎么实现一个Messager类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联是一家专注于成都网站设计、做网站、成都外贸网站建设公司与策划设计,广德网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:广德等地区。广德做网站价格咨询:13518219792
简化Messager类
看MVVMLight的Messager源码,自己实现了一个简单的Messager类。
Messager类可以在MVVM中,实现View与VM、VM与VM、View与View的通信。
public class Messager { private static Messager _MessageInstance; private Dictionary_MessageCollection=new Dictionary (); private Dictionary _MessageTCollection = new Dictionary (); public static Messager Default { get { if (_MessageInstance == null) { _MessageInstance = new Messager(); } return _MessageInstance; } } public void Register(string key,Action action) { _MessageCollection.Add(key,action); } public void Register (string key, Action action) { ActionClass actionClass = new ActionClass (); actionClass.action = action; _MessageTCollection.Add(key, actionClass); } public void Send(string key) { if (_MessageCollection.Keys.Contains(key)) { _MessageCollection[key].Invoke(); } } public void Send (string key,T para) { if (_MessageTCollection.Keys.Contains(key)) { ActionClass actionClass=(ActionClass ) _MessageTCollection[key]; actionClass.action.Invoke(para); } } }
主要通过Register方法来注册,Send方法来触发。
比如,VM中需要显示一个窗体,为了不破坏MVVM模式,我们可以把显示窗体的方法写在View中,并注册到Messager
Messager.Default.Register("ChangeControlShow", ExecuteChangedContrlShow); private void ExecuteChangedContrlShow(string msg) { //some code... }
在VM中调用
Messager.Default.Send("ChangeControlShow","test");
Send有两个参数,第一个是方法的Key,根据这个Key,可以找到唯一的方法,第二个参数是需要调用的方法的参数。
上述内容就是MVVM中怎么实现一个Messager类,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。