终于说到Event了。阅读本篇之前,请参阅我的另一篇关于事件的文章:CLR笔记:10.事件
Prism自带的示例与MVP模式的耦合性太大了,以至于看不出Prism框架中独特的Event机制。于是,我自己写了一个超级简单的Sample,以飨读者。
示例代码下载:code.zip
事件的实现很简单,以下是傻瓜化Step by Step:
1. 在公共类库中定义事件AddNotamsEvent :
public class AddNotamsEvent : CompositePresentationEvent<NotamsInfo> { }
其中,NotamsInfo为一个自定义的实体:
public class NotamsInfo
{
public string IATA
{
get;
set;
}
public string ICAO
{
get;
set;
}
}
当然也可以直接使用简单类型,这样就不用自定义实体了:
public class AddAircraftEvent : CompositePresentationEvent<int>
2. 在事件发布方:
News news = new News() {
Title = "Bao's demo was published.",
Content = "This message is wonderful."
};
eventAggregator.GetEvent<NewsAddedEvent>().Publish(news);
3. 在事件订阅方:
this.eventAggregator.GetEvent<NewsAddedEvent>().Subscribe(ShowMessage);
这里,ShowMessage是一个具有News类型参数的方法:
public void ShowMessage(News news)
{
tbSimpleParam.Text = news.Title;
}
这样,一个完整的Prism事件机制就完成了。