本文主要介绍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有两个参数,第一个是方法的键,根据这个键可以找到唯一的方法,第二个参数是要调用的方法的参数。
这样,只要知道方法的键,就可以在任何文件中调用注册的方法,我们也不再需要使用委托了。
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。