Prism EventAggregator。接收事件并再次发送]]

问题描述 投票:1回答:1

在我的项目中,我有三个ViewModel(例如ViewModelAViewModelBViewModelC)。我需要编写以下逻辑。ViewModelA使用Prism的ViewModelB将值发送到EventAggregatorViewModelB接收值并将其发送到ViewModelCViewModelC接收值并执行某项操作。

这里是代码:

// 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 ...

c# wpf mvvm prism eventaggregator
1个回答
1
投票

事件聚合器的工作方式是每个人都可以收听每个事件。因此,如果要从A发送到B(然后从B发送到C),则需要两个不同的“私人”事件。

© www.soinside.com 2019 - 2024. All rights reserved.