prism中还有一个发布订阅的功能
首先创建一个文件夹Event创建一个类继承于PubSunbEvent
namespace ModuleA.Event
{
public class MessageEvent:PubSubEvent<string>//传递消息的格式是string类型
{
}
}
通过构造函数注入 IEventAggregator aggregator这个接口 主要用来订阅事件
public ViewCViewModel(IEventAggregator aggregator)//信息汇集 生成一个字段
{
CancelCommand = new DelegateCommand(Cancel);
SaveCommand = new DelegateCommand(Save);
this.aggregator = aggregator;
}
发布:在取消按钮这里加入
private void Cancel()//取消
{
//RequestClose?.Invoke(new DialogResult(ButtonResult.No));
aggregator.GetEvent<MessageEvent>().Publish("Hello");
//通过MessageEvent 发布一个Hello
}
再在ViewC当中去订阅这个
public ViewC(IEventAggregator aggregator)//通过构造函数注入
{
InitializeComponent();
//负责订阅
aggregator.GetEvent<MessageEvent>().Subscribe(SubMessage);
this.aggregator = aggregator;
}
private void SubMessage(string obj)
{//接受完消息就取消订阅
aggregator.GetEvent<MessageEvent>().Subscribe(SubMessage);
MessageBox.Show($":{obj}");
}
基于PubSubEvent可以实现诸多方法
public class TextEvent:PubSubEvent<Test>
{
//可以通过这种方法 跨模块进行发送消息 发布->订阅
}
public class Test
{
public string Id { get; set; }
public string Name { get; set; }
}
namespace Prism.Events
{
//
// 摘要:
// Defines a class that manages publication and subscription to events.
//
// 类型参数:
// TPayload:
// The type of message that will be passed to the subscribers.
public class PubSubEvent<TPayload> : EventBase
{
//
// 摘要:
// Subscribes a delegate to an event that will be published on the Prism.Events.ThreadOption.PublisherThread.
// Prism.Events.PubSubEvent`1 will maintain a System.WeakReference to