【发布时间】:2016-06-21 05:13:09
【问题描述】:
在我的 LoginModule 视图模型中,我正在调度一个事件:
void LoginUpdate(object sender, EventArgs e)
{
_eventAggregator.GetEvent<LoginStatusEvent>().Publish(_status);
}
在EventModule:
public class LoginStatusEvent : PubSubEvent<LoginStatus>
{
}
然后我尝试在不同的模块中订阅它:
public class EventModule : IModule
{
IRegionManager _regionManager;
IEventAggregator _eventAggregator;
private SubscriptionToken subscriptionToken;
private bool isLoggedIn { get; set; }
public EventModule(IEventAggregator eventAggregator, IRegionManager regionManager)
{
_regionManager = regionManager;
_eventAggregator = eventAggregator;
LoginEventsListener();
}
public void Initialize()
{
}
public void LoginEventsListener()
{
LoginStatusEvent loginStatusEvent = _eventAggregator.GetEvent<LoginStatusEvent>();
if (subscriptionToken != null)
{
loginStatusEvent.Unsubscribe(subscriptionToken);
}
subscriptionToken = loginStatusEvent.Subscribe(LoginStatusEventHandler, ThreadOption.UIThread, false);
}
public void LoginStatusEventHandler(LoginStatus loginStatus)
{
Trace.WriteLine(">> Got it!!");
}
}
但是,LoginStatusEventHandler 从未被解雇,我也没有收到任何错误。
【问题讨论】:
-
你在哪里定义事件?发布者和订阅者都需要引用完全相同的类型。
-
该事件在
EventModule中定义,在LoginModule中触发,我也在尝试在EventModule中订阅它 -
它是否与“订阅”方法中的“真”标志一起使用?
-
是的,是的。请把它放在@galakt 的答案中,我会接受它。谢谢。