Caliburn.Micro框架使用观察者模式实现了事件聚合器
Caliburn.Micro对参数采用强类型的方式,相比MvvmLight算是省心,易用
详细的说明参见官方文档https://caliburnmicro.com/documentation/event-aggregator
主要记录一下使用步骤:
1,在Bootstrapper中的Configure方法中向IOC容器注册EventAggregator(在安装了Caliburn.Micro.Start中会有这行代码)
container.Singleton<IEventAggregator, EventAggregator>();
2,声明一参数类(或者不新建,直接使用简单类型 如int 但不利于可维护)
public class MessagerSelectItemModel
{
public MainTabItem MainTabItem
{
get;set;
}
}
3,在需要接收事件的VM中订阅,并实现IHandle接口
IHandle<MessagerSelectItemModel> //VM类 实现接口
IoC.Get<IEventAggregator>().Subscribe(this); //构造函数中注册
//实现接口
public void Handle(MessagerSelectItemModel message)
{
SelIndex =(int) message.MainTabItem;
}
4,在需要发布事件的VM中Public事件
IoC.Get<IEventAggregator>().PublishOnUIThread(new MessagerSelectItemModel());
官网有说明:为了防止内存泄露应取消订阅