在我的项目中,我有三个ViewModel(例如ViewModelA
,ViewModelB
和ViewModelC
)。我需要编写以下逻辑。ViewModelA
使用Prism的ViewModelB
将值发送到EventAggregator
。ViewModelB
接收值并将其发送到ViewModelC
。ViewModelC
接收值并执行某项操作。
这里是代码:
// The data that will be send using the event aggregator. class EventData : PubSubEvent<int> { } class ViewModelA { IEventAggregator m_eventAggregator; public ViewModelA(IEventAggregator eventAggregator) { m_eventAggregator = eventAggregator; // Publish some value. eventAggregator.GetEvent<EventData>().Publish(10); } } class ViewModelB { IEventAggregator m_eventAggregator; public ViewModelB(IEventAggregator eventAggregator) { m_eventAggregator = eventAggregator; eventAggregator.GetEvent<EventData>().Subscribe(OnDataReceived); } void OnDataReceived(int value) { // Here I want to send the value to the ViewModelC. How can I do it? } }
PS:这是大型项目的一部分。因此,请勿建议在没有
ViewModelA
的情况下直接从ViewModelC
发送到ViewModelB
。
在我的项目中,我有三个ViewModel(例如ViewModelA,ViewModelB和ViewModelC)。我需要编写以下逻辑。 ViewModelA使用EventAggregator将值发送到ViewModelB ...
事件聚合器的工作方式是每个人都可以收听每个事件。因此,如果要从A发送到B(然后从B发送到C),则需要两个不同的“私人”事件。