MVVM中怎么实现一个Messager类
本篇文章为大家展示了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类,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
新闻名称:MVVM中怎么实现一个Messager类
分享路径:http://www.jxjierui.cn/article/ppsoee.html


咨询
建站咨询
