MVVM简化的Messager类实例代码

MVVM简化的Messager类实例代码

本文主要介绍MVVM的简化Messager类的相关信息。通过示例代码进行了非常详细的介绍,对于大家的学习或者工作都有一定的参考价值。有需要的朋友下面跟边肖学习。

前言

在开发Wpf/SL应用程序时,我们经常会遇到不同页面和表单之间参数传递的问题。对于这类问题,我们通常通过事件来实现数据传输,也可以定义全局静态变量来共享数据。这里,我们使用另一种非常高效和优雅的方法来传递消息。在这里,我称之为信使。其实Messenger并不是mvvm的专利。我们可以把它看作是一种设计模式,你可以在其他方面使用它。net程序。

简化Messager类

看MVVMLight的Messager源代码,自己实现一个简单的Messager类。

Messager类可以在MVVM中实现视图与虚拟机、虚拟机与虚拟机、视图与视图之间的通信。

公共类消息器

{

私有静态Messager _ MessageInstance

private Dictionarystring,Action _ message collection=new dictionary string,Action();

private Dictionarystring,action class _ messaget collection=new dictionary string,action class();

公共静态消息默认

{

得到

{

if (_MessageInstance==null)

{

_ message instance=new Messager();

}

return _ MessageInstance

}

}

公共void寄存器(字符串键,动作动作)

{

_MessageCollection。添加(键,动作);

}

public void RegisterT(字符串密钥,ActionT操作)

{

action class ST action class=new action class ST();

actionClass.action=action

_MessageTCollection。Add(key,action class);

}

公共void发送(字符串密钥)

{

if (_MessageCollection。Keys .包含(key))

{

_MessageCollection[key]。invoke();

}

}

公共void SendT(字符串密钥,T para)

{

if (_MessageTCollection。Keys .包含(key))

{

action class t action class=(action class t)_ messaget collection[key];

action class . action . invoke(para);

}

}

}

它由主register方法注册,并由Send方法触发。

例如,需要在VM中显示一个表单。为了不破坏MVVM模式,我们可以编写在视图中显示表单的方法,并用Messager注册它。

信使。default . register string( ChangeControlShow ,executechangedcontlshow);

私有void ExecuteChangedContrlShow(字符串消息)

{

//一些代码.

}

在虚拟机中调用

信使。default . send string( ChangeControlShow , test );

Send有两个参数,第一个是方法的键,根据这个键可以找到唯一的方法,第二个参数是要调用的方法的参数。

这样,只要知道方法的键,就可以在任何文件中调用注册的方法,我们也不再需要使用委托了。

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

MVVM简化的Messager类实例代码