1. 程式人生 > 其它 >【Prism006】事件

【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 } }