永远不会触发与EventAggregator模式中的Subscribe链接的方法

时间:2014-11-22 12:45:19

标签: c# wpf xaml prism eventaggregator

我有两个名为ViewModelOne和ViewModelTwo的ViewModel。

我的Infrastructure项目中也有一个名为SelectedTileChangedEvent的类。这是代码:

public class SelectedTileChangedEvent : CompositePresentationEvent<int> { }

在ViewModelOne中:

_eventAggregator.GetEvent<SelectedTileChangedEvent>().Publish(1);

调用此Publish方法后,ViewModelOne的实例将被销毁。

在ViewModelTwo的构造函数中:

_eventAggregator.GetEvent<SelectedTileChangedEvent>().Subscribe(SelectedTileChanged);

private void SelectedTileChanged(int selectedTileId)
{
    //some code
}

但是从未触发过SelectedTileChanged方法。

我尝试了以下两种可能的解决方案:

  1. 我已将一个额外参数传递给订阅方法keepSubscriberReferenceAlive = true。所以,我的代码看起来像:

    _eventAggregator.GetEvent<SelectedTileChangedEvent>().Subscribe(SelectedTileChanged, true);
    
  2. 我认为在任何Subscriber可以收听事件之前,Publisher的实例总是被销毁。所以,我在ViewModelOne上实现了IRegionMemberLifetime,如下所示:

    private bool KeepAlive()
    {
         get { return true; }
    }
    
  3. 上述两种尝试都没有给我所需的结果。

    我真的需要订阅SelectedTileChangedEvent,因此我希望从ViewModelTwo调用我的SelectedTileChanged方法....

    由于

0 个答案:

没有答案