【Prism006】事件

 

简介

Prism库提供了一种事件机制,可以在应用程序中松散耦合的组件之间进行通信。此机制基于事件聚合器服务,允许发布者和订阅者通过事件进行通信,但彼此之间仍然没有直接引用。
EventAggregator提供多播发布/订阅功能。这意味着可以有多个发布服务器引发同一事件,也可以有多个订阅服务器侦听同一事件。
使用Prism库创建的事件是类型化事件。这意味着您可以在运行应用程序之前利用编译时类型检查来检测错误。在Prism库中,EventAggregator允许订阅者或发布者定位特定的EventBase。事件聚合器还允许多个发布者和多个订阅者,如下图所示。

 

 

 
EventAggregator类在容器中作为服务提供,并且可以通过IEventAggregator接口进行检索。事件聚合器负责定位或构建事件,并在系统中保存事件的集合。
public interface IEventAggregator
{
    TEventType GetEvent<TEventType>() where TEventType : EventBase;
}
 
EventAggregator在首次访问时构造事件(如果尚未构造)。这使发布者或订阅者无需确定事件是否可用。
 

使用

创建事件

public class TickerSymbolSelectedEvent : PubSubEvent<string>{}
 

发布事件

public class MainPageViewModel
{
    IEventAggregator _eventAggregator;
    public MainPageViewModel(IEventAggregator ea)
    {
        _eventAggregator = ea;
    }
}
_eventAggregator.GetEvent<TickerSymbolSelectedEvent>().Publish("STOCK0");
 

订阅事件

public class MainPageViewModel
{
    public MainPageViewModel(IEventAggregator ea)
    {
        ea.GetEvent<TickerSymbolSelectedEvent>().Subscribe(ShowNews);
    }

    void ShowNews(string companySymbol)
    {
        //implement logic
    }
}

 

posted @ 2021-12-16 14:46  爱吃豆子  阅读(67)  评论(0)    收藏  举报