Cal,EventAggregator和Application.Deactivated的问题

时间:2011-07-18 21:31:23

标签: c# eventaggregator cal

我遇到了CAL和事件聚合器的问题。我正在尝试在停用或激活应用程序时发布事件(application.activated和application.deactivated)。我的一些模块有弹出框,我想在应用程序失去焦点时隐藏它。

这是

下面的一个小代码示例

app.xaml.cs

protected override void OnStartup(StartupEventArgs e)
{
    eventAggregator.GetEvent<AppDeactivatedEvent>().Subscribe(RunIt);

    Deactivated += (s, a) => eventAggregator.GetEvent<AppDeactivatedEvent>().Publish(EmptyPayload.Empty);
    Deactivated += (s, a) => Console.WriteLine("Deactivated - in app.xaml"); 
    Activated += (s, a) => eventAggregator.GetEvent<AppActivatedEvent>().Publish(EmptyPayload.Empty);

    base.OnStartup(e);
}

Module.cs

ea.GetEvent<AppActivatedEvent>().Subscribe(presenter.AppDeactivated);

呈现

public void AppDeactivated(EmptyPayload empty)
{
    Console.WriteLine("App Deactivated - Module");
}

当应用程序失去焦点时,我会在控制台中获得以下内容 已取消激活 - 在app.xaml中 当App重新获得焦点时,我得到以下内容 应用程序已停用 - 模块

关于为什么事件聚合器会等到应用程序重新获得重点关注事件的任何想法。

由于

1 个答案:

答案 0 :(得分:0)

事实证明我的活动订阅存在问题。没问题,只是眼睛疲惫