我有两个名为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方法。
我尝试了以下两种可能的解决方案:
我已将一个额外参数传递给订阅方法keepSubscriberReferenceAlive = true
。所以,我的代码看起来像:
_eventAggregator.GetEvent<SelectedTileChangedEvent>().Subscribe(SelectedTileChanged, true);
我认为在任何Subscriber可以收听事件之前,Publisher的实例总是被销毁。所以,我在ViewModelOne上实现了IRegionMemberLifetime
,如下所示:
private bool KeepAlive()
{
get { return true; }
}
上述两种尝试都没有给我所需的结果。
我真的需要订阅SelectedTileChangedEvent,因此我希望从ViewModelTwo调用我的SelectedTileChanged方法....
由于