Prism学习笔记-模块之间通信的几种方式

在开发大型复杂系统时,我们通常会按功能将系统分成很多模块,这样模块就可以独立的并行开发、测试、部署、修改。使用Prism框架设计表现层时,我们也会遵循这个原则,按功能相关性将界面划分为多个模块,每个模块又包含多个Region。这就需要解决模块之间、Region之间经常需要进行通信的问题,Prism提供了以下几种方式:

1、聚合事件(Event aggregation

使用方式,先在一个公共模块中定义一个事件MyEvent ,传输数据为MyEntity。

public class MyEvent : CompositePresentationEvent
{
}

然后在需要等待处理事件的模块中订阅事件,如下所示:

private IEventAggregator eventAggregator;

eventAggregator = (IEventAggregator)ServiceLocator.Current.GetService(typeof(IEventAggregator));

eventAggregator.GetEvent().Subscribe(MyEventHandler, true);

public void MyEventHandler(MyEntity myEntity)
{

}

eventAggregator 相当于一个全局的集合,保存了所有订阅的事件。

在发起通信的模块中发布事件,如下所示:

eventAggregator.GetEvent().Publish(new MyEntity());

2、全局命令

使用方式,在公共模块中定义一个全局命令类:

public static class GlobalCommands
{
        public static CompositeCommand OpenCommand = new CompositeCommand();

}

在使用该命令的View中:

转载于:https://www.cnblogs.com/wenjingu/archive/2011/11/19/2255398.html

你可能感兴趣的:(Prism学习笔记-模块之间通信的几种方式)